2017-06-04 137 views
-1

我想從子視圖模型更改父視圖屬性(它綁定到UI控件)。怎麼做? 有什麼建議嗎?如何從WPF中的子視圖更改父視圖屬性?

感謝, 的Gowtham

+0

事件對此很好,或者您可以在父視圖中創建靜態操作方法。或者如果你想獲得真正的技術,你可以創建一個消息總線。 –

+0

我在這種情況下使用以下兩種方法之一:1)在子視圖模型中觸發事件並在父級虛擬機中訂閱此事件2)使用所需方法創建一個接口,在父級虛擬機中實現它,並將父級虛擬機上的引用傳遞給子級vm通過這個接口。如果嵌套級別大於1,我更喜歡第二種方法。 – Maxim

回答

0

子視圖模型沒有關於默認父知識。您可以在創建時向孩子注入對父母的引用,例如

public MethodInParent() 
{ 
    var child = new ChildViewModel(this); 
} 

或者您可以使用信使或事件聚合器以鬆散耦合的方式在孩子和父母之間發送消息或事件。有關此概念的更多信息,請參閱以下鏈接:https://blog.magnusmontin.net/2014/02/28/using-the-event-aggregator-pattern-to-communicate-between-view-models/

+0

請注意,ChildViewModel不應將整個父視圖模型作爲參數,因爲這是一種不好的做法。子視圖模型必須知道父視圖模型,只需知道它需要什麼,僅此而已。 'ChildViewModel'的構造函數可以在父視圖模型中實現一些接口。 – Maxim

相關問題