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>

上記のコードは、互いに独立して TextBlocks のいずれかに下線を引いていますが、それらのいずれかがマウスオーバーされたときにすべての下線を引く必要があります。

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>

コンバーターでは、それらのいずれかが true の場合、true を返します。

もう 1 つのオプション (最初のほうが優れています) は、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>
于 2013-10-14T09:03:41.723 に答える