假设我有一个具有以下结构的应用程序:
(1)ViewModelA
(2)ReportManager
(3)ViewA
所以 - 首先,让我明白一点。 ViewA绑定到ViewModelA。
现在不那么明显了。 ViewModelA将一个ReportManager的单例实例注入到它的构造函数中。 ViewModelA公开了一个名为SomeReport的公共只读属性。此属性的getter指向ReportManager的单例实例中的属性。请考虑以下示例:
public ISomeViewModel SomeReport
{
get { return _reportManager.SomeReport; }
}
在ViewA中,我有一个ContentPresenter,其content属性绑定到ViewModelA中的SomeReport属性 - 并且因为ViewModelA中的SomeReport属性是只读的,所以我将绑定设置为OneWay。
对SomeReport属性所做的任何和所有更改都是在ReportManager类中进行的 - 因此,此属性具有私有的setter。我遇到的问题是ViewA中的ContentPresenter没有注册对SomeReport属性所做的更改。
对我可能做错的任何帮助都不胜感激。
感谢。
答案 0 :(得分:1)
您可以在ViewModel上实现INotifyPropertyChanged,然后通过调用NotifyPropertyChanged来指示SomeReport已更改。