我是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>
其他两种风格仅包含触发器广告制定者。
我很困惑,我感谢任何帮助:)