Задание контекста данных в XAML останавливает работу триггера данных - PullRequest
0 голосов
/ 22 сентября 2010

У меня есть настройка DataTrigger, например, так:

<UserControl.Resources>
    <Style x:Key="resultTypeStyle">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Result, Path=Result.Type}" Value="Confirmation">
                <Setter Property="Control.Visibility" Value="Collapsed" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

и два элемента управления, которые его используют:

    <TextBlock Style="{StaticResource resultTypeStyle}" FontSize="14" Grid.Row="2">Condition</TextBlock>
    <myns:ConditionBuilderView Style="{StaticResource resultTypeStyle}" DataContext="{Binding Condition}" Grid.Row="3"/>

Тип результата изменяется в поле со списком.

Когда типом результата является Подтверждение, TextBox исчезает, но ConditionBuilderView остается видимым , если Я не удаляю из него атрибут DataContext.

Мне нужно установитьатрибут DataContext, чтобы элемент управления получал правильные данные.

Что делает установка контекста данных, что означает, что свойство видимости больше не работает?

1 Ответ

2 голосов
/ 22 сентября 2010

Вы фактически меняете контекст, используемый для привязки, в стиле ConditionBuilderView. Таким образом, ваш DataTrigger ищет Result.Path в связанном условии. Если это только о видимости, это должно работать:

<TextBlock Style="{StaticResource resultTypeStyle}" FontSize="14" Grid.Row="2">Condition</TextBlock>
<ContentControl Grid.Row="3" Style="{StaticResource resultTypeStyle}" >
    <myns:ConditionBuilderView DataContext="{Binding Condition}"/>
</ContentControl>
...