2013-10-14 57 views
0

当鼠标悬停在任何一个上时,如何让多个TextBlock文本加下划线?为多个WPF文本块文本加下划线

<StackPanel Orientation="Horizontal"> 
    <TextBlock Style="{StaticResource UnderlineStyle}" Text="{Binding FirstValue}" /> 
    <TextBlock Style="{StaticResource UnderlineStyle}" Text=" - " /> 
    <TextBlock Style="{StaticResource UnderlineStyle}" Text="{Binding SecondValue}" /> 
</StackPanel> 

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

上面的代码强调任何的TextBlocks彼此独立的,但我需要所有这些所有的当它们中的任何是鼠标到后痊愈加下划线。

回答

1

你应该使用一个DataTrigger与MultiBinding -

<MultiBinding Converter="{StaticResource myConverter}"> 
    <Binding ElementName="textBlock1" Path="IsMouseOver" /> 
    <Binding ElementName="textBlock2" Path="IsMouseOver" /> 
    <Binding ElementName="textBlock3" Path="IsMouseOver" /> 
</MultiBinding> 

,并在转换器,如果其中有一个为真,则返回true。

另一个选项(第一个更好)是为IsMouseOver提供3个DataTriggers,任何文本块(给它们命名,并在Binding中使用ElementName)。

<DataTrigger Binding="{Binding ElementName=textBlock1, Path=IsMouseOver}" Value="True" > 
    <Setter Property="TextDecorations" Value="Underline" /> 
</DataTrigger> 
<DataTrigger Binding="{Binding ElementName=textBlock2, Path=IsMouseOver}" Value="True" > 
    <Setter Property="TextDecorations" Value="Underline" /> 
</DataTrigger> 
<DataTrigger Binding="{Binding ElementName=textBlock3, Path=IsMouseOver}" Value="True" > 
    <Setter Property="TextDecorations" Value="Underline" /> 
</DataTrigger>