It should work. It's hard to see why this happens without the rest of the code. Do you implement the INotifyPropertyChanged interface in any class with the IsAnalysisRunning property?
Here is a small example that I used for testing:
MainWindow.xaml
<Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:my="clr-namespace:WpfApplication2" Title="MainWindow" Height="350" Width="525"> <Grid> <Image > <Image.Style> <Style TargetType="{x:Type Image}"> <Setter Property="Source" Value="Desert.jpg" /> <Style.Triggers> <DataTrigger Binding="{Binding IsAnalysisRunning}" Value="True" > <Setter Property="Source" Value="Koala.jpg"/> </DataTrigger> </Style.Triggers> </Style> </Image.Style> </Image> <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="0,12,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> </Grid> </Window>
MainWindow.xaml.cs:
public partial class MainWindow : Window, INotifyPropertyChanged { public MainWindow() { InitializeComponent(); this.DataContext = this; } private bool _isAnalysisRunning = false; public bool IsAnalysisRunning { get { return _isAnalysisRunning; } set { _isAnalysisRunning = value; NotifyPropretyChanged("IsAnalysisRunning"); } } private void NotifyPropretyChanged(string property) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(property)); } public event PropertyChangedEventHandler PropertyChanged; private void button1_Click(object sender, RoutedEventArgs e) { IsAnalysisRunning = !IsAnalysisRunning; } }
source share