У меня есть стиль для кнопки. В зависимости от того, включена кнопка или нет, я хочу изменить фон. Вот как это выглядит:
<Style x:Key="MyButtonStyle" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Button}, Path=IsEnabled, PresentationTraceSources.TraceLevel=High}" Value="False">
<Setter Property="Background" Value="Purple"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Button}, Path=IsEnabled, PresentationTraceSources.TraceLevel=High}" Value="True">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
Это всего лишь базовый пример. На самом деле мне нужен MultiDataTrigger, но он даже не работает с обычным DataTrigger. Я вижу только серую кнопку.
Это след:
System.Windows.Data Предупреждение: 56: Создано BindingExpression (hash = 31767240) для Binding (hash = 6303779)
System.Windows.Data Предупреждение: 58: Путь: 'IsEnabled'
System.Windows.Data Предупреждение: 60: BindingExpression (hash = 31767240): режим по умолчанию разрешен для OneWay
System.Windows.Data Предупреждение: 61: BindingExpression (hash = 31767240): триггер обновления по умолчанию разрешен для PropertyChanged
System.Windows.Data Предупреждение: 62 : BindingExpression (hash = 31767240): Присоединиться к System.Windows.Controls.Button.NoTarget (hash = 24311680)
System.Windows.Data Предупреждение: 66: BindingExpression (hash = 31767240): RelativeSource (FindAncestor) требует контекста дерева
System.Windows.Data Предупреждение: 65: BindingExpression (hash = 31767240): разрешение отложенного источника
System.Windows.Data Предупреждение: 67: BindingExpression (hash = 31767240): разрешение источника
System.Windows. Предупреждение о данных: 70: BindingExpression (hash = 31767240): обнаружен элемент контекста данных: (OK)
System.Windows.Data Предупреждение: 7 3: предок поиска типа Button: запрошенная сетка (hash = 35377238)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошенный ContentPresenter (hash = 51189900)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошен Border (hash = 48541090)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошен StartStopControl (hash = 22721178)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошенная сетка (hash = 32321338)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошенный ContentPresenter (hash = 31184590)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошен Border (hash = 37117888)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошен MenuPanelControl (hash = 873549)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошенная сетка (hash = 29953511)
System.Windows.Data Warnin g: 73: предок поиска типа Button: запрошен ContentPresenter (hash = 42576376)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошен AdornerDecorator (hash = 66649760)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошен Border (hash = 23566381)
System.Windows.Data Предупреждение: 73: предок поиска типа Button: запрошен MainWindow (hash = 38392424)
Похоже, что он проходит через все визуальное дерево, начиная с сетки, в которой находится кнопка. Почему он не начинается с кнопки?