2010-01-19 3 views
3

У меня есть набор триггеров в форме XAML, и для жизни я не могу понять, почему работает один набор, а другой нет, несмотря на то, что они связаны с одной и той же переменной.Триггеры Label и GroupBox не работают, одни и те же триггеры работают на StackPanel

Во-первых, триггеры, которые делают работу:

<StackPanel Orientation="Vertical" Margin="25,0,0,0"> 
    <StackPanel.Style> 
     <Style TargetType="{x:Type StackPanel}"> 
      <Setter Property="IsEnabled" Value="False" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding GorOption.InternalName}" Value="Separator"> 
        <Setter Property="IsEnabled" Value="True" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </StackPanel.Style> 
</StackPanel> 

<StackPanel Orientation="Vertical" Margin="25,0,0,0"> 
    <StackPanel.Style> 
     <Style TargetType="{x:Type StackPanel}"> 
      <Setter Property="IsEnabled" Value="False" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding GorOption.InternalName}" Value="BubblePoint"> 
        <Setter Property="IsEnabled" Value="True" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </StackPanel.Style> 
</StackPanel> 

Этот триггер работает прекрасно. Теперь у меня есть GroupBox и Label с очень похожими триггерами, которые не работают вообще. Триггеры, которые не работают:

<GroupBox Header="Recombined Gas" Grid.Row="1" Grid.ColumnSpan="2"> 
    <GroupBox.Style>     
     <Style TargetType="{x:Type GroupBox}"> 
      <Setter Property="Header" Value="Recombined Gas" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding GorOption.InternalName}" Value="Separator"> 
        <Setter Property="Header" Value="Separator Gas" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding GorOption.InternalName}" Value="BubblePoint"> 
        <Setter Property="Header" Value="Dissolved Gas" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </GroupBox.Style> 
</GroupBox> 

И триггер ярлык, который не работает:

<Label Content="Reombined GOR" Width="90"> 
    <Label.Style> 
     <Style TargetType="{x:Type Label}"> 
      <Setter Property="Content" Value="Recombined GOR" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding GorOption.InternalName}" Value="Separator"> 
        <Setter Property="Content" Value="Separator GOR" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding GorOption.InternalName}" Value="BubblePoint"> 
        <Setter Property="Content" Value="Dissolved GOR" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Label.Style> 
</Label> 

Я чувствую, что я пропускаю что-то фундаментальное здесь, но сейчас он избегает меня. Как вы можете видеть, все триггеры привязаны к одному значению и триггеру по тем же параметрам. Это потому, что у меня есть два блока DataTrigger, пытающиеся связать одну и ту же переменную в одном блоке триггеров? Я не могу представить, что это проблема, и на самом деле я уверен, что я делаю это в другом месте. Это что-то конкретное для Label и GroupBox, о котором я не знаю?

ответ

4

Ничего, ответил на это сам через две минуты после его публикации. Я думаю, что это была одна из проблем «нужно видеть в другом контексте». Я чувствую, что я разговариваю сам с собой ...

В любом случае проблема заключается в том, что когда вы устанавливаете свойство, такое как «Содержимое» или «Заголовок» в исходном теге XAML, попробуйте изменить это свойство с помощью триггера, триггер по какой-то причине игнорируется. Я предполагаю, что это объясняется в каком-то архаичном документе WPF, который я еще не видел, но он очень запутан, пока вы не выясните это.

+0

Итак, удалите первое значение в теге XAML. Это сработало и для меня. Я подумал, что было бы неплохо включить туда «увидеть триггер». –

Смежные вопросы