ビューモデルの 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;
}