How do I bind a datatrigger in xaml to a code-defined dependency property?
c#, data-binding, datatrigger, xaml
Solution
Locally set properties always override style set properties, so you need to remove the locally set one and set the default value in your style instead:
<Rectangle Width="50" Height="50">
<Rectangle.Style>
<Style TargetType="Rectangle">
<Setter Property="Fill" Value="Gray" />
<Style.Triggers>
<DataTrigger Binding="{Binding Active}" Value="True">
<Setter Property="Fill" Value="Green"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
Problem
My code behind for a window defines a dependency property, "Active"... ``` public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } public bool Active { get { return (bool) GetValue(ActiveProperty); } set { SetValue(ActiveProperty, value); } } public static readonly DependencyProperty ActiveProperty = DependencyProperty.Register("Active", typeof(bool), typeof(MainWindow), new UIPropertyMetadata(false)); } ``` And then I bind to that property using two checkboxes in xaml. I also want to change the fill of a rectangle based on that property. How can I make this work? ``` <Window x:Class="WpfTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" DataContext="{Binding RelativeSource={RelativeSource Self}}"> <StackPanel> <CheckBox IsChecked="{Binding Active}" /> <CheckBox IsChecked="{Binding Active}" /> <Rectangle Fill="Gray" Width="50" Height="50"> <Rectangle.Style> <Style TargetType="Rectangle"> <Style.Triggers> <DataTrigger Binding="{Binding Active}" Value="True"> <Setter Property="Fill" Value="Green" /> </DataTrigger> </Style.Triggers> </Style> </Rectangle.Style> </Rectangle> </StackPanel> </Window> ``` Checking one box auto-checks the other, but does not change the rectangle color :(