Стили WPF применяются только к корневому элементу с использованием dataTrigger

Я столкнулся с проблемой со стилями WPF.

В корне userControl у меня есть ресурс, определенный следующим образом:

<UserControl.Resources>
    <Style TargetType="{x:Type MyControl}">
        <Setter Property="MyControl.AAA" Value="Value1" />
    </Style>
</UserControl.Resources>

Это прекрасно работает, оно влияет на все элементы MyControl во всей иерархии визуального дерева.

Если я попытаюсь изменить сеттер с помощью DataTrigger, вот так:

<UserControl.Resources>
    <Style TargetType="{x:Type MyControl}">
        <Style.Triggers>                
           <DataTrigger Binding="{Binding Path=SelectedAAAValue}" Value="Value1">
               <Setter Property="MyControl.AAA" Value="Value1" />
           </DataTrigger>
           <DataTrigger Binding="{Binding Path=SelectedAAAValue}" Value="Value2">
               <Setter Property="MyControl.AAA" Value="Value2"/>
           </DataTrigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

Стиль применяется только к корневому элементу определенного типа MyControl.

Кто-нибудь может объяснить мне, почему это происходит и как я могу применить стиль ко всем конкретным элементам через DataTriggers?

Большое спасибо за любую помощь. Ондра

1 ответ

Я не уверен, почему это происходит, но, возможно, вы можете найти больше информации здесь. Это, конечно, только в том случае, если свойство, которое вы устанавливаете для MyControl.AAA, является DependecyProperty.

Следующий абзац под изображениями должен объяснить больше.

Другие вопросы по тегам