プログラムでページ (MainPage) に数回追加されたユーザー コントロール (MyUC) があります。
MyUC では、DataContext を次のようなビュー モデルに設定します。
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
DataContext = new MyUCViewModel();
}
ビュー モデル (MyUCViewModel) には、データ項目のコレクションがあります。
public MyDataItemCollection MyDataItems { get; private set; }
そして、コンストラクターには次のものがあります。
public MyUCViewModel()
{
this.MyDataItems = new MyDataItemCollection();
this.MyDataItems.ChosenItems.CollectionChanged += new NotifyCollectionChangedEventHandler(ChosenItemsChanged);
this.MyDataItems.Add(new DataItem());
}
上記の MyDataItems には、ChosenItems の別のコレクションがあり、それに NotifyCollectionChangedEventHandler を追加しました。
私のコードの他の部分は、ChosenItems コレクションから追加および削除され、その部分は正常に機能しているようです。
次に、ビュー モデルにイベント ハンドラー メソッドを追加します。
private void ChosenItemsChanged(object sender, EventArgs e)
{
MessageBox.Show("Chosen Items Changed");
}
これも機能し、ChosenItems コレクションに影響する UI をユーザーが変更するたびに、メッセージ ボックスが表示されます。
私が今理解しようとしている部分は、ユーザー コントロールで ChosenItemsChanged イベントが発生したときに MainPage が何かを行うように設定する方法です。私がやりたいことは、ページ上で生成された MyUC コントロールを MainPage ループさせ、各ユーザーコントロールにメソッドを呼び出させることです。