3

XAML形式のトリガーのセットがありますが、まったく同じ変数にバインドされているにもかかわらず、1つのセットが機能し、もう1つのセットが機能しない理由を一生理解できません。

まず、機能するトリガー:

<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>

ここで基本的な何かが欠けているような気がしますが、今はそれが私を逃れています。ご覧のとおり、すべてのトリガーは同じ値にバインドされ、同じオプションでトリガーされます。1つのTriggersブロックで同じ変数にバインドしようとしている2つのDataTriggerブロックがあるためですか?これが問題になるとは想像できません。実際、他の場所でこれを行っていると確信しています。私が知らないのはLabelとGroupBoxに固有のものですか?

4

1 に答える 1

4

気にしないでください、投稿してから2分後に自分で答えてください。それは「別の文脈でそれを見る必要がある」問題の1つだったと思います。自分と話しているような気がします...

とにかく、問題は、元のXAMLタグにContentやHeaderなどのプロパティを設定し、そのプロパティをトリガーで変更しようとすると、何らかの理由でトリガーが無視されることです。これは、私がまだ見たことがない古風なWPFドキュメントで説明されていると思いますが、理解するまでは非常に混乱します。

于 2010-01-19T20:06:39.713 に答える