ここで少し単純化しています:
私はタブ コントロールを持っており、個々のタブがさらにタブを作成できるようにする必要があります。できれば兄弟。そのため、タブ コントロールを親、そのタブ ページを子と呼んでいます。
MVVM を使用すると、私のタブ コントロール ビュー モデルは次のようになります。
class ParentViewModel
{
ObservableCollection<ChildViewModel> _pages;
public ObservableCollection<ChildViewModel> Pages
{
get
{
if (_pages == null)
_pages = new ObservableCollection<ChildViewModel>();
return _pages;
}
}
public ParentViewModel()
{
Pages.Add(new ChildViewModel());
}
}
したがって、ParentViewModel に ChildViewModel オブジェクトのコレクションがあります。
これはうまく機能し、ParentViewModel 内からコレクションに必要なすべての追加の ChildViewModel オブジェクトを簡単に追加して、すべてビューにうまく反映させることができます。
私がやりたいことは、ChildView で (たとえば) ボタンを押すと、ParentViewModel オブジェクトのコレクションに別の ChildViewModel が追加されるようにすることです。
リレー コマンド、ルーティングされたコマンド、relativesource バインディング、依存性注入パターンなどについて多くのことを読んだことがありますが、これを達成するための「適切な」(MVVM の意味での) 方法と、それが最適な方法を教えてください。終わり。ありがとうございました!