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)
<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)进行更改并绑定到此属性。当然还有其他选择,但在我看来,为每个项目创建一个虚拟机在大多数情况下是最好的解决方案。