目標是直接訪問子ViewModel中的屬性,而不會丟失整個ViewModel結構的上下文。我怎樣才能直接綁定到兒童viewmodel?
當前,我有一個字典中的資源,該字典保存對ViewModel的引用,該引用用作整個應用程序的數據上下文。
所以,我對每個視圖的DataContext看起來是這樣的:
DataContext="{StaticResource mainViewModel}"
在我的ViewModel我有嵌套子的ViewModels像這樣:
public class ParentViewModel {
public ChildVM ChildVM { get; set; }
public ParentVM(){
ChildVM = new ChildViewModel();
}
}
public class ChildViewModel {
public string SomeProperty { get; set; }
}
在我看來,我可以從訪問屬性數據上下文像這樣:
<Button Text="{Binding ChildVM.SomeProperty}"/>
但是這變得非常重複。我希望能夠做到:
<Button Text="{Binding SomeProperty}"/>
用我的DataContext設置爲這樣的僞:
DataContext="{StaticResource MainViewModel, Path=ParentVM.ChildVM}"
任何想法?
這是偉大的,如果你只打算使用一個子視圖模型上只說自己的用戶控件的一部分,但我認爲Alberto的回答更清楚地涵蓋了整個UserControl。 雖然我必須牢記這一點。 – jporcenaluk
雖然它不像Alberto的答案那麼幹淨,但子視圖模型仍然以這種方式存在於父母的背景下,所以這就是我這樣做的方式。 – jporcenaluk