मैं लिंकबटन की तरह दिखने के लिए बटन कैसे बना सकता हूं, और मैं हाइपरलिंक का उपयोग नहीं करना चाहता ... !!
कोई सुझाव
मैं लिंकबटन की तरह दिखने के लिए बटन कैसे बना सकता हूं, और मैं हाइपरलिंक का उपयोग नहीं करना चाहता ... !!
कोई सुझाव
जवाबों:
यदि आप किसी भी सामान्य बटन शैली को नहीं चाहते हैं और बस कुछ ऐसा चाहते हैं जो हाइपरलिंक जैसा दिखता है तो आप इसके साथ शुरू कर सकते हैं
<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>
यहाँ एक शैली के रूप में ही है:
<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>
और आप इसे इस तरह से उपयोग कर सकते हैं:
<Button Style="{StaticResource LinkButton}" Content="Clicky" />
<Trigger Property="IsEnabled" Value="False"><Setter Property="Foreground" Value="Gray" /> </Trigger>
IsEnabled राज्य को संभालने के लिए
<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>
MichaC और एंडरसन के संस्करण ने अंडरलाइन को थोड़ा गलत रखा, यहां एक अपडेट किया गया संस्करण है जो कि केवल TextBlock
उसी के अंदर किसी अंडरलाइन को जोड़ देगा ContentPresenter
।
यहाँ MichaC के सुझाव को इस प्रकार लागू किया गया है Style
कि आप किसी भी बटन पर पुनः प्रयोग कर सकते हैं:
<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>
सबसे आसान तरीका (मैं अपने आवेदन में ऐसा करता हूं):
<TextBlock Name="..."
Text="..."
Cursor="Hand"
Foreground="Blue"
TextDecorations="Underline"
MouseLeftButtonUp=..."
/>
आपके पास TextDecoration पर पूर्ण नियंत्रण है, उदाहरण के लिए पेन स्टाइल या ऑफ़सेट बदलें। अधिक जानने के लिए इस लिंक पर एक नज़र डालें: http://msdn.microsoft.com/en-us/library/system.windows.textdecorations.underline.aspx
आप हाइपरलिंक का उपयोग क्यों नहीं करना चाहते हैं?
<Button>
<Hyperlink>
</Button>