Wie kann ich Button so gestalten, dass es wie LinkButton aussieht, und ich möchte keinen Hyperlink verwenden ... !!
Irgendwelche Vorschläge
Wie kann ich Button so gestalten, dass es wie LinkButton aussieht, und ich möchte keinen Hyperlink verwenden ... !!
Irgendwelche Vorschläge
Antworten:
Wenn Sie keinen normalen Button-Stil möchten und nur etwas möchten, das wie ein Hyperlink aussieht, können Sie damit beginnen
<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>
Hier ist das Gleiche wie ein Stil:
<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>
und Sie können es so verwenden:
<Button Style="{StaticResource LinkButton}" Content="Clicky" />
<Trigger Property="IsEnabled" Value="False"><Setter Property="Foreground" Value="Gray" /> </Trigger>
, um IsEnabled-Status zu behandeln
<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>
In der Version von MichaC und Anderson wurde die Unterstreichung etwas falsch platziert. Hier ist eine aktualisierte Version, die nur eine Unterstreichung zu allen TextBlock
innerhalb der Version hinzufügt ContentPresenter
.
Hier ist der Vorschlag von MichaC, der Style
auf jeder Schaltfläche wiederverwendet werden kann:
<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>
Der einfachste Weg (ich mache das in meiner Bewerbung):
<TextBlock Name="..."
Text="..."
Cursor="Hand"
Foreground="Blue"
TextDecorations="Underline"
MouseLeftButtonUp=..."
/>
Sie haben die volle Kontrolle über TextDecoration, z. B. ändern Sie den Stiftstil oder den Versatz. Weitere Informationen finden Sie unter diesem Link: http://msdn.microsoft.com/en-us/library/system.windows.textdecorations.underline.aspx
Warum möchten Sie Hyperlink nicht verwenden?
<Button>
<Hyperlink>
</Button>