私は C# プロジェクトに取り組んでいる WPF の初心者です。3 つの編集可能な列を持つ にDataGrid
TwoWay
バインドされています。DataTable
ユーザーが で値の編集を終了したら、イベントとDataGrid
を処理して変更を処理できます。DataTable.RowChanged
DataTable.ColumnChanged
DataGrid
との両方の値は、DataTable
の選択された行がDataGrid
変更された場合にのみ変更されるようです。問題は、ユーザーが同じ行で 2 つの値を同時に編集すると、混乱する値が表示されることDataTable
です。2 番目に編集された値が変更され、最初に編集された値は変更されません。DataGrid.CellEditEnding
イベントの処理など、2 つの正しい値を取得する他の方法を試しまし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 つのスタイルには、トリガー広告セッターのみが含まれます。
私はとても混乱していて、どんな助けにも感謝します:)