Label和GroupBox触发器不起作用,同一触发器在StackPanel上工作

时间:2010-01-19 20:03:50

标签: wpf data-binding triggers label groupbox

我有一组XAML形式的触发器,对于我的生活,我无法弄清楚为什么一个集合有效,另一个没有,尽管被绑定到完全相同的变量。

首先,有效的触发器:

<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块试图绑定到单个触发器块中的同一个变量吗?我无法想象这是一个问题,事实上,我确信我会在其他地方这样做。它不是我不知道的Label和GroupBox特有的东西吗?

1 个答案:

答案 0 :(得分:4)

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

无论如何,问题在于当您在原始XAML标记中设置Content或Header等属性时,尝试使用触发器更改该属性,由于某种原因会忽略该触发器。我假设在一些我尚未见过的古老的WPF文档中对此进行了解释,但在你弄明白之前它会非常混乱。