2009-09-09 40 views
1

我有一個父視圖,它定義了Xaml中的子視圖。子視圖具有綁定到父視圖的ViewModel的DependencyProperty。但是,該視圖的ViewModel也需要該值。WPF MVVM和依賴屬性嵌套視圖

<custom:Parent> 
    <custom:Child ChildId="{Binding ParentFooId}" ... /> 
</custom:Parent> 

ChildId被實現爲ChildView控制的依賴特性。如果ChildViewModel需要ParentFooId,那麼獲得它的適當MVVM方法是什麼?

我不想給ChildViewDataContext鑄造成一個ChildViewModel和設定值在OnChildIdChanged處理程序ChildView的。這對我來說似乎不是MVVM。

我想的另一替代方法是創建一個新的ChildViewModel用值並將其設置爲在OnParentFooIdChanged事件DataContext(在ParentViewModel);但是這看起來不太正確,因爲ViewModel應該對視圖不知情(因此對DataContext s沒有任何認識)。

好像我失去了一些東西明顯...

回答

3

如果我理解正確的問題,您只需要在父視圖模型內創建子視圖模型,並傳遞並保留對父視圖模型的引用。這樣,您可以從子視圖模型引用父視圖模型的任何屬性,並綁定到子視圖中的任一屬性。

+0

所以孩子的視圖模型將有一個「父」屬性包含父母的視圖模型...嗯。我認爲這會起作用......我認爲這可能是我明顯缺少的東西。 – SergioL 2009-11-09 15:04:59

0

如果你只是想從一個依賴項屬性數據傳遞到您的視圖模型我會使用PropertyChangedCallback事件。添加一個將更改後的數據發送到View Model的處理程序。我可能會誤解你的意圖。