假设有以下类:
public class Model
{
public ObservableCollection<A> Items { get; set; }
}
public class A
{
ObservableCollection<B> Data { get; set; }
//... some more properties
}
public class B
{
//..properties
}该模型被绑定到RibbonMenu,并且还应该在上下文菜单中使用。上下文菜单必须绑定到模型中类B的所有项目。模型中的更改(添加新项、删除项、更改项...)应该同时更改上下文菜单和RibbonMenu。
RibbonMenu运行得很好,但是如何在不创建单独模型的情况下绑定上下文菜单呢?
发布于 2010-09-03 22:02:15
您可以创建包装器属性,根据视图控件的需要对A和B实体进行扁平化,并从Model公开它们。
例如,在模型中,你有一个ObservableCollection<A>的私人支持者。然后您就有了一个公共ObservableCollection<A>,它只返回ribbon要绑定到的私有backer。
然后还有一个公共ObservableCollection<B>,它在其getter中执行所需的任何操作,以返回上下文菜单所需的内容。例如,如果您希望在所有的A中都有不同的B,那么让getter对所有A的B进行查询,以返回正确的列表。
最后,要告诉视图模型中发生了更改,请在公共成员的setter中实现INotifyPropertyChanged并引发PropertyChanged事件。
https://stackoverflow.com/questions/3627639
复制相似问题