我是 WPF 的新手,从事 C# 项目。我有一个DataGrid
TwoWay
绑定到DataTable
3 个可编辑列的。当用户完成对 中的值的编辑时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 种样式仅包含触发器广告设置器。
我很困惑,我很感激任何帮助:)