WPFToolkit DataGrid:突出显示修改的行

Phi*_*Gan 4 c# wpf datagrid wpftoolkit

有没有办法突出显示 a 上所有修改的行DataGrid?由于网格绑定到 aSystem.Data.DataTable我想我也许能够将每行的颜色绑定到它RowState(下面的示例),但这似乎不起作用。

有任何想法吗?

xmlns:data="clr-namespace:System.Data;assembly=System.Data"
<Style x:Key="DataGridRowStyle" TargetType="{x:Type toolkit:DataGridRow}">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="true">
            <Setter Property="Background" Value="Blue" />
        </Trigger>
        <DataTrigger Binding="{Binding RowState}"
                     Value="{x:Static data:DataRowState.Modified}">
            <Setter Property="Background" Value="LightYellow" />
        </DataTrigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

HCL*_*HCL 5

<DataGrid.RowStyle> 
  <Style TargetType="DataGridRow"> 
    <Style.Triggers> 
        <DataTrigger Binding="{Binding RowState}" Value="{x:Static data:DataRowState.Modified}"> 
            <Setter Property="Background" Value="LightYellow" />            
        </DataTrigger> 
    </Style.Triggers> 
  </Style> 
</DataGrid.RowStyle> 
Run Code Online (Sandbox Code Playgroud)

更新
在您还发布了您的xaml之后,很明显在xaml中找不到问题。我很快就查看了 DataTable 类的 msdn,但没有看到让 WPF 检测属性更改的机制RowState。因此,直接绑定到该属性不会给您带来可靠的结果。
看来你必须包装你的数据项。我建议为项目创建一个 ViewModel 并添加一个属性,说明该行是否已通过更改通知(INotifyPropertyChanged或 DP)进行更改并绑定到此属性。当然还有其他选择,但在我看来,为每个项目创建一个虚拟机在大多数情况下是最好的解决方案。