2010-01-19 23 views
3

我有一组触发器在XAML形式,并且对于我的生活,我无法弄清楚为什么一组工作,而另一个不,尽管被绑定到完全相同的变量。标签和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和一个非常类似触发器的标签,根本不起作用。

<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块试图绑定到单个Triggers块中的相同变量?我无法想象这是一个问题,事实上,我确信我在别处做这件事。是不是特定于Label和GroupBox的东西?

回答

4

没关系,自己在发布后两分钟回答。我想这是“需要在不同背景下看到它”的问题之一。我觉得自己在跟自己说话......

总之,当你在原始的XAML标签中设置一个像Content或Header这样的属性时,试着用触发器来改变这个属性,触发器就是由于某种原因被忽略。我假设这是在我尚未见过的一些陈旧的WPF文档中解释的,但是直到你弄明白为止,这是非常令人困惑的。

+0

因此,删除XAML标记中的第一个值。它也适用于我。我认为这将是很好的放在那里“见触发”。 – 2013-05-27 07:47:43