2016-09-08 3 views
0

Я хотел бы изменить заливку прямоугольника, основываясь на тексте TextBlockПрямоугольник DataTrigger Fill переплетены в TextBlock текст

Мои TextBlock

<TextBlock Name="lblOk" Text="OK" Foreground="Black" FontSize="20" FontWeight="Medium" /> 

Мой DataTrigger:

<Style x:Key="RectangleFill" TargetType="Rectangle"> 
      <Setter Property="Fill" Value="Blue"></Setter> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName="lblOk, Path=Text}" Value="OK"> 
        <Setter Property="Fill" Value="#FF008C00" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 

Мой DataTrigger не работает, кажется, что Path = Text неверен. Каков правильный путь?

+3

'' 'символ после ElementName в' ElementName = "lblOk' не должен быть там. это опечатка в вопросе или в реальном коде? – ASh

ответ

0

Пожалуйста, проверьте этот код, он работает

<Window.Resources> 
     <Style x:Key="RectangleFill" TargetType="Rectangle"> 
      <Setter Property="Fill" Value="Blue" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=lblOk, Path=Text}" Value="OK"> 
        <Setter Property="Fill" Value="Red" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 
    <StackPanel> 
     <TextBlock Name="lblOk" Text="OK" Foreground="Black" FontSize="20" FontWeight="Medium" /> 
     <Rectangle Width="100" 
        Height="50" Style="{StaticResource RectangleFill}"> 
      <Rectangle.Resources> 

      </Rectangle.Resources> 
     </Rectangle> 
    </StackPanel> 
0

Мой код работает. У меня была ошибка типографии, как комментарий в комментарии.

<Style x:Key="RectangleFill" TargetType="Rectangle"> 
      <Setter Property="Fill" Value="Blue"></Setter> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=lblOk, Path=Text}" Value="OK"> 
        <Setter Property="Fill" Value="#FF008C00" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
Смежные вопросы