0

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

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

上面的代码相互独立地为任何 TextBlock 加下划线,但是当鼠标悬停时,我需要将所有这些都加下划线。

4

1 回答 1

1

您应该使用带有 MultiBinding 的 DataTrigger -

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

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

另一种选择(第一个更好)是为任何文本块的 IsMouseOver 提供 3 个 DataTriggers(给它们命名,并在绑定中使用 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>
于 2013-10-14T09:03:41.723 回答