2013-10-14 54 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>