随笔 - 23  文章 - 0  评论 - 107  阅读 - 46261

Windows Phone中HyperlinkButton 去除下划线

今天使用HyperlinkButton的时候用到一个问题 就是想把它的下划线去掉 但是找了半天没有找到他的属性里面包含有关于UnderLine的属性 

于是在网上找资料 发现有一个用Blend修改模板的方法 但是我个人觉得比较麻烦 而且会生成一大堆的代码 。

 

于是自己在看到有关ControlTemeplate知识的时候发现通过自己自定义模板可以解决 

我的思路是吧HyperlinkButton的Content属性设置为空 再定义ControlTemeplate在里面加一个TextBlock用于显示没有下滑线的文本

复制代码
View Code
  <HyperlinkButton  Height="30"
                             HorizontalAlignment="Left"
                             Margin="100,90,0,0" 
                             Name="hyperlinkButton2" 
                             VerticalAlignment="Top" 
                             Width="200" NavigateUri="/MainPage.xaml">
                <HyperlinkButton.Template>
                    <ControlTemplate>
                        <!-- 下面是使用添加一个文本控件方法实现把下滑线去掉-->
                        <TextBlock TextAlignment="Center">导航</TextBlock>
                        
                        
                    </ControlTemplate>
                </HyperlinkButton.Template>
            </HyperlinkButton>
复制代码

 

但是后面我有看到书上说这样子设置不好,因为HyperlinkButton的Content属性是object属性 所以我们就可以设置image、Panel等类型的值。

书上提供的方法是使用ContentPresenter的Content属性来设置 因为他也是Object的类型。并且通过它还可以绑定HyperlinkButton本身的Content属性值并且没有下滑线

复制代码
View Code
 <HyperlinkButton Content="NAVIGATION">
                <HyperlinkButton.Style>
                    <Style TargetType="HyperlinkButton">
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="HyperlinkButton">
                                    <Border>
                                    <ContentPresenter Content="{TemplateBinding Content}"/>
                                    </Border>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </HyperlinkButton.Style>
            </HyperlinkButton>
复制代码

这里要注意点 在设置ControlTemplate的时候一定要设置TargetType属性的值 不然会报未处理的异常  我就是因为这个原因调试了一下午才发现 诶 伤不起呀。。。。。

如果有知道的希望大家把为什么必须设置TargetType的原因告诉我 谢谢了

posted on   多了特  阅读(2134)  评论(3编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
< 2012年5月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

点击右上角即可分享
微信分享提示