我被搜索了一下,並且很驚訝我還沒找到更簡單的答案。我遵循一個簡單的MVVM模型,並擁有一個視圖模型(「parentVM」),該視圖模型將另一個視圖模型(「childVM」)保存爲公共屬性(get/set)公開的字段。我遇到的問題是我試圖訂閱父視圖的初始化器中的子視圖模型的屬性changed事件。但是當設置一個新的childVM時,事件處理程序會丟失。在C中的對象之間傳遞事件處理程序#
public parentVM : INotitifyPropertyChange{
private _childVM = new childVM();
public parentVM(){
_childVM.PropertyChanged += someHandler;
}
public childVM {
get{
return _childVM;
}
set{
_childVM = value;
//EVENTHANDLERS ARE NOW GONE
}
}
....
}
有沒有辦法將現有的事件處理程序轉移到新的對象?
這是一個簡化的例子。我知道,我可以簡單地招行:
_childVM.PropertyChange += someHandler;
,但這不會爲訂閱事件外部對象的工作。在這些情況下,你不可能知道對象是什麼,處理器是什麼。
也許有一種解決方法,通過引用內部從+ = eventHandler更改爲更多手動AddHander方法的列表,然後填充列表供將來參考。在這一點上,鄧諾只是在想空間。
P.S.如果示例中存在語法錯誤,請原諒,我沒有智能感知,這不是真正的代碼......只是想表達這一點。
我無法理解你想要做什麼。如果正確完成,VM屬性更改由視圖隱式處理。你不一定需要一個明確的事件處理程序。你可以給你一些你試圖完成的內容嗎? – jugg1es