DataTrigger Not Firing in DataGrid
I am trying to implement a DataTrigger on my DataGrid in XAML Code. My Data grid consists of Datatable inside But I couldnt get it whats wrong with my code because my trigger isnt firing. I have searched many articles on internet but I dont know what wrong I am doing Any help in the regard will be appreciated
Here is my XAML code
<DataGrid CanUserAddRows="False" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" ColumnWidth="*" Grid.Row="0" AutoGeneratedColumns="DataGrid_HideOrMoveColumn" ItemsSource="{Binding Path=FaultDataView}" x:Name="dataGrid_faultrec" Background="{x:Null}" BorderBrush="Black" FontWeight="Normal" Margin="10,20,10,10" FontSize="14" > <DataGrid.Columns > <DataGridTemplateColumn Header="Delete"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <!--<Button x:Name="Delete_Fault" Content="Delete" Click="Delete_Fault_Click" Background="Red" />--> <Button x:Name="Delete_Fault" Click="Delete_Fault_Click" Background="White" > <Image Source="Resources\quit.png" Height="20" ></Image> </Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTemplateColumn Header="Edit "> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button x:Name="Edit_Fault" Click="Edit_Fault_Click" Background="White" > <Image Source="Resources\pencil.png" Height="20"></Image> </Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="Background" Value="Yellow" /> <Style.Triggers> <DataTrigger Binding="{Binding Flag}" Value="True"> <Setter Property="Background" Value="Red" /> </DataTrigger> <DataTrigger Binding="{Binding Flag}" Value="False"> <Setter Property="Background" Value="Green" /> </DataTrigger> </Style.Triggers> </Style> </DataGrid.RowStyle> </DataGrid>
My Cs File Code
public event PropertyChangedEventHandler PropertyChanged = delegate { }; public bool Flag { get; set; } protected void OnPropertyChanged(string property) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(property)); } public void Add_Fault(List<faultview> _lastHeaderbody) { is_TP = false; is_continuous = false; is_doubtful = false; int i = 0; try { foreach (var row in _lastHeaderbody) { // total_L_Points += row.Severity; total_L_Points = GetTotalLinearPointFromDB(GetCurrentHeaderRollId()); faults.AddRange(_lastHeaderbody); } foreach (var row in _lastHeaderbody) { DataRow dr = FaultDataTable.NewRow(); //dr["Meter"] = row["Location"]; foreach (var temp in fault_col_heading) { if (fault_bind_field[i] == "Location") { dr[temp] = row.Location; } if (fault_bind_field[i] == "StartMeter") { dr[temp] = row.StartMeter; } if (fault_bind_field[i] == "EndMeter") { dr[temp] = row.EndMeter; } else if (fault_bind_field[i] == "Severity") { dr[temp] = row.Severity; } else if (fault_bind_field[i] == "Description") { dr[temp] = row.Description; } else if (fault_bind_field[i] == "Type") { dr[temp] = row.Type; } else if (fault_bind_field[i] == "id") { dr[temp] = row.id; } else { //do nothing } i++; } if(_lastHeaderbody[0].Description== "Double Pick") { // is_TP = true; Flag = true; OnPropertyChanged("Flag"); } }