假设我有一个具有以下结构的应用程序:
(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属性所做的更改。
任何关于我可能做的不正确的事情的帮助都将不胜感激。
谢谢。
发布于 2011-01-15 01:59:21
您可以在ViewModel上实现INotifyPropertyChanged,然后通过调用NotifyPropertyChanged通知SomeReport已更改。
http://msdn.microsoft.com/en-us/library/ms229614.aspx
https://stackoverflow.com/questions/4694084
复制相似问题