我正在尝试为WPF创建一个LinkLabel控件。实际上,我将从TextBlock创建LinkLabel,并处理MouseEnter、MouseLeave和MouseLeftButtonUp事件。在后端,我有一个基类,它具有您期望在LinkLabel中看到的属性。对于WPF中的大多数其他可单击控件,都有一个默认的MouseEnter动画,其中控件变为“冰蓝色”。当鼠标光标进入TextBlock上时,我想重复此行为。我不确定是否需要从ButtonBase或其他类似的东西派生出来。当"LinkLabel“被点击时,我有一个我能够将光标改变为手,并处理事件的方法。如果访问这个看似默认的颜色变化动画,那么我可能不得不求助于一个简单的前景颜色交换,而不是平滑过渡。如果有人之前已经创建了一个自定义的WPF LinkLabel,或者对这个问题有任何建议,我们将非常感谢您的意见。
发布于 2009-01-12 21:38:09
您现在可以使用TextBlock和HyperLink的组合来创建与WinForms的LinkLabel等价物:
<TextBlock>Here is a <Hyperlink NavigateUri="http://example.com">link</Hyperlink></TextBlock>你不会得到“冰蓝色”的鼠标悬停效果,但你会得到手形光标。我相信你可以用一个简单的触发器来引入你的鼠标悬停效果。
"NavigateUri“属性适用于超链接位于框架控件内的导航样式应用程序。在标准的WPF应用程序中,您需要处理超链接的Click事件,并使用Process.Start来启动具有正确网址的web浏览器。
发布于 2016-05-16 23:48:01
我刚刚为一个按钮创建了一个样式,并在你想要LinkLabel外观的时候为一个按钮应用一个样式。按钮的Click事件用于在文本被点击时执行一个功能。
<Style x:Key="LinkLabelButtonStyle" TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="CornflowerBlue"></Setter>
</Trigger>
</Style.Triggers>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="Transparent">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextDecorations="Underline" Text="{TemplateBinding Content}"></TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="DarkBlue"></Setter>
<Setter Property="MinWidth" Value="90"></Setter>
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
<Setter Property="Padding" Value="5"></Setter>
<Setter Property="Margin" Value="5"></Setter>
<Setter Property="Cursor" Value="Hand"></Setter>
</Style>你可以把上面的样式放在Window.Resources中,这样你就可以在整个窗口中使用它了。
然后,只要您想要LinkLabel外观,就将该样式应用于按钮。
<Button Name="LinkLabelLookALikeButton" Content="Text goes here" Style="{StaticResource LinkLabelButtonStyle}" Click="Event_Goes_Here">
</Button>希望这能有所帮助!
https://stackoverflow.com/questions/437075
复制相似问题