0

私は C# プロジェクトに取り組んでいる WPF の初心者です。3 つの編集可能な列を持つ にDataGrid TwoWayバインドされています。DataTableユーザーが で値の編集を終了したら、イベントとDataGridを処理して変更を処理できます。DataTable.RowChangedDataTable.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 つのスタイルには、トリガー広告セッターのみが含まれます。

私はとても混乱していて、どんな助けにも感謝します:)

4

0 に答える 0