0

我是 WPF 的新手,从事 C# 项目。我有一个DataGrid TwoWay绑定到DataTable3 个可编辑列的。当用户完成对 中的值的编辑时DataGrid,我可以通过处理事件DataTable.RowChangedDataTable.ColumnChanged.

DataGrid和 中的值DataTable似乎仅在所选行发生更改时才会DataGrid更改。问题是,当用户同时编辑同一行中的 2 个值时,我会在 : 中得到令人困惑的值DataTable:第二个编辑的值被修改,而第一个编辑的值没有被修改。我尝试了其他方法来获得 2 个正确的值,例如处理事件DataGrid.CellEditEndingDataGrid.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 种样式仅包含触发器广告设置器。

我很困惑,我很感激任何帮助:)

4

0 回答 0