首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF LinkLabel实现策略

WPF LinkLabel实现策略
EN

Stack Overflow用户
提问于 2009-01-12 21:28:08
回答 2查看 2.2K关注 0票数 0

我正在尝试为WPF创建一个LinkLabel控件。实际上,我将从TextBlock创建LinkLabel,并处理MouseEnter、MouseLeave和MouseLeftButtonUp事件。在后端,我有一个基类,它具有您期望在LinkLabel中看到的属性。对于WPF中的大多数其他可单击控件,都有一个默认的MouseEnter动画,其中控件变为“冰蓝色”。当鼠标光标进入TextBlock上时,我想重复此行为。我不确定是否需要从ButtonBase或其他类似的东西派生出来。当"LinkLabel“被点击时,我有一个我能够将光标改变为手,并处理事件的方法。如果访问这个看似默认的颜色变化动画,那么我可能不得不求助于一个简单的前景颜色交换,而不是平滑过渡。如果有人之前已经创建了一个自定义的WPF LinkLabel,或者对这个问题有任何建议,我们将非常感谢您的意见。

EN

回答 2

Stack Overflow用户

发布于 2009-01-12 21:38:09

您现在可以使用TextBlock和HyperLink的组合来创建与WinForms的LinkLabel等价物:

代码语言:javascript
复制
<TextBlock>Here is a <Hyperlink NavigateUri="http://example.com">link</Hyperlink></TextBlock>

你不会得到“冰蓝色”的鼠标悬停效果,但你会得到手形光标。我相信你可以用一个简单的触发器来引入你的鼠标悬停效果。

"NavigateUri“属性适用于超链接位于框架控件内的导航样式应用程序。在标准的WPF应用程序中,您需要处理超链接的Click事件,并使用Process.Start来启动具有正确网址的web浏览器。

票数 4
EN

Stack Overflow用户

发布于 2016-05-16 23:48:01

我刚刚为一个按钮创建了一个样式,并在你想要LinkLabel外观的时候为一个按钮应用一个样式。按钮的Click事件用于在文本被点击时执行一个功能。

代码语言:javascript
复制
<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外观,就将该样式应用于按钮。

代码语言:javascript
复制
<Button Name="LinkLabelLookALikeButton" Content="Text goes here" Style="{StaticResource LinkLabelButtonStyle}" Click="Event_Goes_Here">                        
                </Button>

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/437075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档