2013-04-12 33 views
0

类ChildViewModel的变化:ParentViewModel变化值 - 物业

类ParentViewModel有 - >公共字符串PropertyA;公共字符串PropertyB;

我有2个screentab工作流程,一个用于父母,另一个用于孩子(显然依赖于父母数据)。 我想要将一个PropertyA绑定到childView中的一个文本块,这样当我将screentab更改为parentView并修改PropertyA时,它应该自动反映在childView中。

我已经定义在childViewModel(sortof伪)的性质:

public string PropA 
get { return PropertyA; } 
set 
{ 
PropertyA = value; 
OnPropertyChanged("PropertyA"); 
} 

我也已经尝试UpdateSourceTrigger,鉴于模式=双向性质 - WPF。

仍然无法获取属性更改。

任何建议,欢迎....

回答

1

如果ChildViewModel从ParentViewModel继承,你已经证明那么为什么你有第二个属性PropA?为什么不直接将ChildView绑定到ParentViewModel.PropertyA?

我假设这不是实际的继承,但您希望将ParentViewModel事件转发给ChildViewModel。要做到这一点,你需要听ParentViewModel的事件的PropertyChanged ...您可以通过做到这一点...

// listen to parentViewModel PropertyChanged events 
parentViewModel.PropertyChanged += HandleParentPropertyChangedEvents; 

只要确保如果关闭您删除的事件处理程序或更改ChildViewModel。

在ChildViewModel处理程序看起来就像这样......

private void HandleParentPropertyChangedEvents(object sender, PropertyChangedEventArgs e) 
{ 
    OnPropertyChanged(e.PropertyName); 
} 

这将重新从火对孩子的父任何的PropertyChanged事件。在您的ChildViewModel事件处理程序中,如果需要,还可以过滤正在转发的属性。

+0

这就是我最初绑定的方式:ParentViewModel.PropertyA 但这并不反映当我更改回childView时的更改。 – aromore

+0

所以ParentViewModel和ChildViewModel是两个不同的实例,而不是同一个实例?如果多数民众赞成的话,那么我的答案应为ChildViewModel工作听取ParentViewModel的事件的PropertyChanged。 – Kevin

+0

好吧,我解决了这个问题。这确实是一个简单的修复。 但是,乌拉圭回合后帮我解决别的东西,而不是与此相关的QN ...因此没有标记为答案...干杯! – aromore