我是 WPF 的新手,从事 C# 项目。我有一个DataGrid TwoWay绑定到DataTable3 个可编辑列的。当用户完成对 中的值的编辑时DataGrid,我可以通过处理事件DataTable.RowChanged和DataTable.ColumnChanged.
DataGrid和 中的值DataTable似乎仅在所选行发生更改时才会DataGrid更改。问题是,当用户同时编辑同一行中的 2 个值时,我会在 : 中得到令人困惑的值DataTable:第二个编辑的值被修改,而第一个编辑的值没有被修改。我尝试了其他方法来获得 2 个正确的值,例如处理事件DataGrid.CellEditEnding,DataGrid.CurrentCellChanged但我最终失败了。
如果我没有说清楚(英语不是我的母语:)),这里有一个例子。用户双击单元格r1c1进行编辑,然后双击r1c2。我得到的值DataTable是未编辑的值r1c1和编辑的值r1c2...
这是我的 XAML 代码:
<DataGrid x:Name="xxx" ......
AutoGenerateColumns="False"
BeginningEdit="xxxEditBegin"
CellEditEnding="xxxEditEnd"
CurrentCellChanged="xxxCellChg"
ColumnHeaderStyle="{StaticResource DataGridColumnHeaderStyle}"
RowStyle="{StaticResource DataGridRowStyle}"
CellStyle="{StaticResource DataGridCellStyle}">
......
</DataGrid>
<Style x:Key="DataGridCellStyle" TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{TemplateBinding Background}">
<DataGridDetailsPresenter HorizontalAlignment="Stretch" VerticalAlignment="Center" Content="{TemplateBinding Content}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
......
</Style.Triggers>
</Style>
其他 2 种样式仅包含触发器广告设置器。
我很困惑,我很感激任何帮助:)