【问题标题】:Underline multiple WPF TextBlock texts下划线多个 WPF TextBlock 文本
【发布时间】:2013-10-21 19:08:42
【问题描述】:

当鼠标悬停在多个 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单独加下划线,但是当鼠标悬停时,我需要把它们全部加下划线。

【问题讨论】:

    标签: wpf textblock underline


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2018-05-30
      • 2011-04-22
      • 1970-01-01
      • 2013-08-22
      相关资源
      最近更新 更多