0

ビューモデルの ObservableCollection にバインドされているビューにデータグリッドがあります。問題は、新しいアイテムを ObservableCollection にプログラムで追加した後、データグリッドに表示されますが、それを「選択できる場合とできない場合」です。 、私はそれが少し風変わりに聞こえることを知っていますが、我慢してください。コードでは、次の行に沿ったものです。

<DataGrid Grid.Column="0" AutoGenerateColumns="False" ItemsSource="{Binding Path=MyList} SelectedValue{Binding Path=SelectedMyItem}... >
</Datagrid>

次に、私のビューモデルで:

 private ObservableCollection<MyType> myList; 
 public ObservableCollection<MyType> MyList { get { return myList;} }

 privte void AddItem(MyType item)
 {
     myList.Add(item)
 }

public MyType SelectedMyItem {get;set;}

ここで、Datarid が更新され、新しいアイテムがグリッドに表示されます。ただし、選択しようとすると、グリッドはリスト内の前のアイテムを強調表示しますが、新しいアイテムの周りに黒い境界線 (選択したアイテムが取得する) が表示されます。同様に、私の SelectedValue Binding は新しいアイテムに設定されます。ユーザーがアイテムを削除できるコンテキストメニューも作成しました。右クリックして新しく追加されたアイテムを削除しようとすると、代わりにリスト内の前のアイテムが削除されます。
ただし、これが発生すると、新しいアイテムを適切に選択できます。したがって、私が想定しているデータグリッドを更新する必要があると推測しています(MyListのINotifyPropertyChangedをトリガーすると、正常なことが起こることに注意してください)

編集:

public override bool Equals(object obj)
    {
        var o = obj as MyType;
        if (o == null)
            return false;
        return o.MyTypeId == this.MyTypeId;
    }
4

0 に答える 0