假设以下类:
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工作得很好但是如何在不创建单独模型的情况下绑定上下文菜单呢?
答案 0 :(得分:0)
您可以创建包装器属性,根据视图控件的需要展平您的A和B实体,并从模型中公开它们。
因此,例如,在Model中,您有一个ObservableCollection<A>
的私人支持者。然后你有一个公共ObservableCollection<A>
,它只返回要绑定的功能区的私有支持者。
然后还有一个公共ObservableCollection<B>
,它可以在其getter中执行任何操作,以返回上下文菜单所需的内容。例如,如果你想要所有As的不同B,让getter对所有A的B进行查询以返回正确的列表。
最后,要告诉视图在模型中进行了更改,请实现INotifyPropertyChanged并在公共成员的setter中引发PropertyChanged事件。