Я должен смочь измениться Style
из управления, когда значение свойства и значение данных верны. Например, мои связанные данные имеют IsDirty
свойство. Я хотел бы изменить цвет фона своего управления когда IsDirty
верно, И управление выбрано. Я нашел MultiTrigger
и MultiDataTrigger
классы..., но в этом случае я должен так или иначе включить данные и свойство. Как я могу сделать это?
Другое примечание: Я должен смочь сделать это в коде позади не XAML.
MultiDataTrigger работает для DependencyProperties так же хорошо, как и для обычных свойств. Просто установите Path в привязке к имени вашего свойства зависимости.
Вы должны быть осторожны с установкой источника этой привязки, поскольку по умолчанию источником является DataContext элемента, к которому привязан триггер. Если триггер используется в стиле для выбираемого объекта, вы можете использовать свойство RelativeSource Binding:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsDirty}" Value="True" />
<Condition Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Self}}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Cyan" />
</MultiDataTrigger>
Вот как я на самом деле сделал это в коде программной части:
new MultiDataTrigger
{
Conditions =
{
new Condition
{
Binding = new Binding("IsDirty"),
Value = true
},
new Condition
{
Binding = new Binding("IsSelected") { RelativeSource = RelativeSource.Self },
Value = true
}
},
Setters =
{
new Setter
{
Property = Control.BackgroundProperty,
Value = Brushes.Pink
}
}
}