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属性值并且没有下滑线 www.zzzyk.com
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的原因告诉我 谢谢了
摘自 多了特
补充:移动开发 , Windows Phone ,