我有一个用户控件(MyUC),它以编程方式多次添加到页面(MainPage)中。
在 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 进行更改时,我都会收到一个消息框。
我现在要弄清楚的部分是如何设置它,以便我的 MainPage 在我的用户控件中触发 ChosenItemsChanged 事件时执行某些操作。我想要做的是让 MainPage 循环通过页面上生成的 MyUC 控件并使每个用户控件调用一个方法。