单击 headers Datagrid WPF C# 时出错

Error by clicking on headers Datagrid WPF C#

我的 XAML 中有一个代码:检查条件时,目标行将为橙色。

这是结果:

这是XAML.cs后面的代码:

     private void DataGrid_Loaded(object sender, RoutedEventArgs e)
    {
        foreach (TrainOrdersClass item in dgBaseProd.ItemsSource)
        {
            var row = dgBaseProd.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
            if ((item.IsOverFilled == true) || (item.IsOverWeighed == true))
            {
                row.Background = Brushes.Orange;
            }
        }
    }

问题是当我点击 DataGrid 的 headers 时,所有颜色都消失了!

Xaml:

      <DataGrid   Name="DataGrid"   AutoGenerateColumns="False"  
              Height="Auto" Width="780" Margin="10,10,10,10"
              IsReadOnly="True" ItemsSource="{Binding Path=PreloadedRailcarstList}"
              SelectedItem="{Binding Path=BaseProductToUpdate}"
              AlternationCount="2"  AlternatingRowBackground="LightBlue" Loaded="DataGrid_Loaded"  >                                

                <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseDoubleClick">
                    <i:InvokeCommandAction Command="{Binding Path=DataContext.OpenUpdateBaseProductViewCmd , RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding BaseProductToUpdate.name}"/>
                </i:EventTrigger>
                <i:EventTrigger EventName="PreviewKeyDown">
                    <i:InvokeCommandAction Command="{Binding Path=DataContext.OpenUpdateBaseProductViewCmd , RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding BaseProductToUpdate.name}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>

            //..

我该如何解决? 谢谢,

定义一个 RowStyle,在其中设置 Background 使用 DataTriggers:

<DataGrid Name="DataGrid" AutoGenerateColumns="False"  
              Height="Auto" Width="780" Margin="10,10,10,10"
              IsReadOnly="True" ItemsSource="{Binding Path=PreloadedRailcarstList}"
              SelectedItem="{Binding Path=BaseProductToUpdate}"
              AlternationCount="2" AlternatingRowBackground="LightBlue">
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsOverFilled}" Value="True">
                    <Setter Property="Background" Value="Orange" />
                </DataTrigger>
                <DataTrigger Binding="{Binding IsOverWeighed}" Value="True">
                    <Setter Property="Background" Value="Orange" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="MouseDoubleClick">
            <i:InvokeCommandAction Command="{Binding Path=DataContext.OpenUpdateBaseProductViewCmd , RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding BaseProductToUpdate.name}"/>
        </i:EventTrigger>
        <i:EventTrigger EventName="PreviewKeyDown">
            <i:InvokeCommandAction Command="{Binding Path=DataContext.OpenUpdateBaseProductViewCmd , RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding BaseProductToUpdate.name}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    ...
</DataGrid>

不要使用代码隐藏。