2012-05-08 32 views
1

我在我的視圖模型中有以下屬性,視圖綁定到此屬性。如何從C#/ WPF中的嵌套屬性獲取通知?

除了ActiveCategory(在_catManager之內)可以從其他事件(此視圖之外)更改的特殊情況以外,所有工作都正常。

我不希望暴露在視圖模型整個Category Manager,所以我只露出我需要什麼樣的屬性。什麼是最好的方式來做到這一點,以便視圖得到所有更改的通知,甚至是在視圖模型中沒有觸發的更改?


    public ICategory SelectedCategory 
    { 
     get 
     { 
     return _catManager.ActiveCategory; 
     } 
     set 
     { 
     _catManager.ActiveCategory = value; 
     OnPropertyChanged("SelectedCategory"); 
     } 
    } 

回答

5

讓你的視圖模型勾入_catManager的INotifyPropertyChanged的事件,並把它通過視圖模型中繼屬性更改事件。當你看到「ActiveCategory」通過時,這意味着你需要爲「SelectedCategory」提出一個INPC。

1

您需要委派通知,無論什麼階級_catManager是也。

所以更改它的ActiveCategory財產提出了一個通知。

一種方法是在類中添加一個處理程序,將其作爲一個屬性,然後發出一個通知,指出它的_catManager發生了某種變化。