I am trying to change the appearance of a control when the value of a property changes. I am using the XAML and C# code below, but nothing happens when I click on the button that changes the value of the Property myProperty, except when I first run the application. Any suggestions?
publicpartialclass MainWindow : Window
Boolean _Check = false;
DataContext = this;
privatevoid Button_Click_1(object sender, RoutedEventArgs e)
_Check = !_Check;
There are a couple of things wrong with your code here. The first thing is that you don't have to supply both true and false DataTrigger elements. Add one of those triggers as the default content. When the bool value goes to the default value, the style trigger is removed.
Now, as to why you aren't seeing the value change. Even though you are changing the value, you aren't telling the XAML that the value has changed. Make this class implement INotifyPropertyChanged and have your code raise the PropertyChanged event when the vale changes. This raises the change notification.
Oh, and you aren't binding to check in your example. You are binding to myProperty.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
First of all, you have not done any binding to your Check Property, binding to myProperty will not help you at all. You need to change your binding to bind to the Check property. Secondly for bindings to react to changes in the bound property you need to implement the INotifyPropertyChanged[^] interface in you viewmodel/code behind. Try this code :