Триггеры Label и GroupBox не работают, тот же триггер работает на StackPanel - PullRequest
3 голосов
/ 19 января 2010

У меня есть набор триггеров в форме 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 и 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, которого я не знаю?

1 Ответ

4 голосов
/ 19 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...