2012-11-07 7 views
9

Einfache Frage. Kann der folgende WPF C# -Code etwas Gewicht einsparen? Ich meine, WTF, äh ... ich meine WPF, komm eins. Hast du schon einmal CSS gesehen? Ich möchte nur den Text unterstreichen, wenn ich wie ein Link mit der Maus schwebe. Muss ich wirklich 9 Zeilen dafür hinzufügen?WPF TextBlock Style Unterstreichen auf Mouse Hover

<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> 

Vielen Dank im Voraus!

+1

Upvote zum Negieren von WPF-Stilen. – Skrymsli

Antwort

13

Fügen Sie den Stil als Ressource hinzu; dann kannst du es wenigstens wiederverwenden. Ich denke, das ist das Beste, was du tun kannst.

<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

Dies hält den Code in der Tat sauberer. Da es keine Alternative gibt, werde ich dies als Antwort akzeptieren. –

+4

TextDecoration muss TextDecorations sein, sonst klagt der Compiler – lvmeijer

+0

Ich frage mich, wie das mit einer angehängten Eigenschaft oder einem Verhalten gemacht werden könnte. Attached Eigentum ist am prägnantesten und am einfachsten zu kombinieren, denke ich. –