当鼠标悬停在其中任何一个上时,如何使多个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彼此独立,但我需要所有这些都被加下划线,当它们中的任何一个被鼠标覆盖时。
答案 0 :(得分: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>