2013-10-14 2 views
0

마우스가 위에있을 때 여러 TextBlock 텍스트에 밑줄을 그 어서 만들 수있는 방법은 무엇입니까?여러 WPF 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 중 하나를 강조하지만 난 그들 중 하나가 마우스 overed 때 밑줄이 그들 모두의 모든 필요합니다. 그 중 하나에 해당하는 경우, true를 돌려

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

을하고 컨버터 -

답변

1

당신은 MultiBinding와 DataTrigger를 사용해야합니다.

또 다른 옵션 (첫 번째 방법이 더 좋습니다)은 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>