2012-11-07 73 views
9

簡單的問題。下面的WPF C#代碼可以減少一些重量嗎?我的意思是,跆拳道,呃...我的意思是WPF,來一個。你有沒有看過CSS?當我像鏈接一樣鼠標懸停時,我只想強調文本。我真的必須爲此添加9行嗎?WPF TextBlock風格強調鼠標懸停

<TextBlock x:Name="Cassette_tblPrintLabel" Text="Print Label" Canvas.Left="154" Canvas.Top="215" Foreground="#FF3355FF" Cursor="Hand" MouseDown="Cassette_lblPrintLabel_MouseDown"> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="TextBlock.TextDecoration" Value="Underline" /> 
      </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

在此先感謝!

+1

Upvote用於消除WPF樣式。 – Skrymsli

回答

13

將樣式添加爲資源;那麼至少你可以重新使用它。我認爲這是你能做的最好的事情。

<Application.Resources> 
    <Style TargetType="TextBlock" x:Key="HoverUnderlineStyle"> 
     <Style.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="TextBlock.TextDecorations" Value="Underline" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Application.Resources> 

<TextBlock Style="{StaticResource HoverUnderlineStyle}" /> 
+0

這確實使代碼更清潔。由於可能沒有替代方案,我會接受這個答案。 –

+4

TextDecoration必須是TextDecorations,否則編譯器會抱怨 – lvmeijer

+0

我想知道這可以通過附加的屬性或行爲來完成。附屬性是最簡潔和最容易結合我想。 –