1

WPF の DataGrid に苦労しています。ObservableCollection がバインドされています。ユーザーが最初のセルに入ると、それに応じて他のセルが更新されます。これを実現するために、CellEditEnding イベントをサブスクライブして、最初のセルが変更された後に更新を強制しました。

このイベントでは、次のように MyClass の他のプロパティも更新します。

    private void DataGridTeilnehmer_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
        if (!commiting)
        {
          commiting = true;
            DataGridTeilnehmer.CommitEdit(DataGridEditingUnit.Row, false);
            commiting = false;

            if (e.Column.DisplayIndex == 0)
            {
                MyClass data = (e.Column.GetCellContent(e.Row) as ContentPresenter).Content as MyClass;
                data.pass = "nothing";
            }
        }

問題は、「何も」を含むプロパティ「パス」にバインドされているセルの編集モードに入るまで、グリッドが更新されないため、「何も」が表示されないことです。でも、すぐに見せたい。

前もってありがとう、
フランク

PS: 私は人生で多くの (データ) グリッドを使用してきましたが、WPF グリッドはこれまでに遭遇した最悪のものです。

4

1 に答える 1

2

正しい方法は次のとおりです。現在、私のソフトウェアでこの方法を使用しています

private void MyWPFFrid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
    {
        if (e.Column.SortMemberPath.Equals("EndDate"))
        {
            if (((MyObject)e.Row.Item).EndDate.Equals(DateTime.MinValue))
            {
                ((MyObject)e.Row.Item).Completed = 1;
                ((MyObject)e.Row.Item).CompletedDescription = "YES";
            }
            else
            {
                ((MyObject)e.Row.Item).Completed = 0;
                ((MyObject)e.Row.Item).CompletedDescription = "NO";
            }


            this.MyWPFFrid.CurrentItem = ((MyObject)e.Row.Item);



            if (!e.Row.IsEditing)
            {
                this.MyWPFFrid.Items.Refresh();
            }


        }
    }
于 2014-07-22T10:04:45.603 に答える