Come posso fare Pulsante per assomigliare LinkButton, e non voglio usare Hyperlink ... !!pulsante Collegamento in WPF
Qualsiasi suggerimento
Come posso fare Pulsante per assomigliare LinkButton, e non voglio usare Hyperlink ... !!pulsante Collegamento in WPF
Qualsiasi suggerimento
Se non si desidera che il normale stile Button e desidera solo qualcosa che assomiglia a un collegamento ipertestuale si potrebbe iniziare con questo
<Button Margin="5" Content="Test" Cursor="Hand">
<Button.Template>
<ControlTemplate TargetType="Button">
<TextBlock TextDecorations="Underline">
<ContentPresenter />
</TextBlock>
</ControlTemplate>
</Button.Template>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Foreground" Value="Blue" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Ecco lo stesso di uno stile:
<Style
x:Key="LinkButton"
TargetType="Button">
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="Button">
<TextBlock
TextDecorations="Underline">
<ContentPresenter /></TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter
Property="Foreground"
Value="Blue" />
<Style.Triggers>
<Trigger
Property="IsMouseOver"
Value="true">
<Setter
Property="Foreground"
Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
e si può usare in questo modo:
<Button Style="{StaticResource LinkButton}" Content="Clicky" />
Si prega di notare che c'è un errore di battitura qui - LinkButon – GarethD
Questa risposta produce un pulsante che ha uno spazio tra la sottolineatura e il testo. @Christians answer risolve questo. –
Anche questo non ha il puntatore "mano" quando si passa il mouse sul collegamento ipertestuale. Utilizzare la risposta wiki della comunità per questa funzionalità. – AlbatrossCafe
Perché non si desidera utilizzare il collegamento ipertestuale?
<Button>
<Hyperlink>
</Button>
Coz, Ogni volta che cerco di ottenere padre nella struttura ad albero visuale viene generata un'eccezione dicendo collegamento ipertestuale non viene visiva o Visual3D –
voglio usare questo. L'ho fatto funzionare ma non riesco a liberarmi dell'ombra sui bordi del pulsante. Come si fa a farlo? –
Ecco il suggerimento di MichaC implementato come Style
che è possibile riutilizzare su qualsiasi pulsante:
<Style x:Key="LinkButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<TextBlock TextDecorations="Underline">
<ContentPresenter />
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Blue" />
<Setter Property="Cursor" Value="Hand" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
fatto di questo un wiki comunità, considerando il 99% di questa risposta è stato rubato da MichaC :) –
<Style x:Key="LinkButton"
TargetType="Button"
BasedOn="{StaticResource ResourceKey={x:Type Button}}"
>
<Setter Property="Width" Value="Auto"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<ContentPresenter Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
VerticalAlignment="Center"
>
<ContentPresenter.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextDecorations" Value="Underline" />
</Style>
</ContentPresenter.Resources>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Blue" />
<Setter Property="Cursor" Value="Hand" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
versione di Anderson di MichaC e collocate la sottolineatura leggermente sbagliato, qui è una versione aggiornata che sarà solo aggiungere una sottolineatura a qualsiasi TextBlock
che si trovano all'interno dello ContentPresenter
.
Christian: Come mai non riesco a vedere alcuna sottolineatura utilizzando il tuo stile? MichaC ha funzionato bene per me. – newman
Non funziona neanche per me. Lo stile in ContentPresenter.Risorse semplicemente non è sempre applicati a qualsiasi TextBlock all'interno del pulsante – Clyde
OK, il problema sembra essere che lo stile si applica solo a un implicito generato TextBlock – Clyde
Il modo più semplice (lo faccio nella mia domanda):
<TextBlock Name="..."
Text="..."
Cursor="Hand"
Foreground="Blue"
TextDecorations="Underline"
MouseLeftButtonUp=..."
/>
avete il pieno controllo su textDecoration, per esempio cambia stile penna o offset. dare un'occhiata a questo link per saperne di più: http://msdn.microsoft.com/en-us/library/system.windows.textdecorations.underline.aspx
cattiva pratica, uno stile a un pulsante Collegamento come suggerito è Molto meglio ... e se hai 50 LinkButtons così? Inoltre, che dire se è necessario aggiungere un'azione Hover o una decorazione diversa? –
Non sono d'accordo con Tomer. "cattiva pratica" implica che non c'è mai bisogno di questo approccio più semplice. In questo momento ho un caso in cui questa era la soluzione perfetta, cioè creare un pulsante in code-behind). Grazie Siavash. –
Un'altra soluzione utilizzando Hyperlink
è quello di mettere in all'interno TextBlock
.
<TextBlock>
<Hyperlink Click="...">
<TextBlock Text="Link text" />
</Hyperlink>
</TextBlock>
Se qualcuno importa, il problema con tutte le risposte qui è che i collegamenti nelle risposte non si comportano in realtà come i collegamenti. Non sono a conoscenza della cronologia dell'URL visitato e i colori non sono i colori dell'URL di sistema. Ma se non hai quei requisiti, stanno bene. – Will
Sto cercando di capire come utilizzare i colori di Windows corretti. http://stackoverflow.com/questions/5094447 –