2013-04-12 44 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