在WPF中混淆DataGrid编辑

时间:2013-08-22 03:48:02

标签: c# .net wpf datagrid

我是WPF的新手,从事C#项目。我有一个DataGrid TwoWay绑定到DataTable,其中包含3个可编辑的列。当用户完成DataGrid中的值编辑后,我可以通过处理事件DataTable.RowChangedDataTable.ColumnChanged来执行更改。

DataGridDataTable中的值似乎只有在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>

其他两种风格仅包含触发器广告制定者。

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

0 个答案:

没有答案