これはこれを達成するための「ベストプラクティス」の方法ではないと確信していますが、非常に簡単です。
ListView の選択した項目をパラメーターとしてコマンドに渡すことができます。
<Button Content="Delete selected item" Command="{Binding DeleteCommand}" CommandParamenter="{Binding ElementName=SomeListView, Path=SelecteItem}" />
コレクションに存在しない場合でも、例外を取得せずに ObservableCollection からアイテムを削除しようとすることができるため、プライベートな Delete メソッドで、ViewModel にあるすべての ObservableCollections からそのアイテムを削除しようとすることができます。ここでは、アイテムが同時に 2 つのコレクションに存在することはできないと想定しています。そうでない場合、すべてのコレクションからアイテムを削除するため、私が言ったことは機能しません。これを行う場合は、削除する前に null を確認してください。null オブジェクトを削除しようとすると、例外が発生します。
private void DeleteLO(object listitem)
{
if(listitem != null)
{
if(listitem as CollectionType1 != null) //cast your listitem to the appropiate type inside your collection
this.Wk01CECollection.Remove(listitem);
if(listitem as CollectionType2 != null)
this.Wk02CECollection.Remove(listitem);
//etc.
}
}
これらすべてに加えて、MVVM を使用している場合は、ViewModel がビューについて認識しないことが最善であるため、VM 内で ListView を参照すると、その原則が破られます。