今天使用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的原因告訴我 謝謝了