我目前正在尝试学习WPF和MVVM,但是最近遇到了一个问题,我不知道该如何解决。因为我是新手,所以如果有什么不太对的地方,请告诉我。
我有一个ParentView和它的ParentViewModel。ParentView包含两个视图SubViewA和SubViewB,它们都有自己的ViewModel。这是我的ParentView.xaml:
<local:ViewBase.DataContext>
<local:ParentViewModel x:Name="Model" />
</local:ViewBase.DataContext>
<Grid>
<local:SubViewA Visibility="{Binding ElementName=Model, Path=SubViewAVisibility}" />
<local:SubViewB Visibility="{Binding ElementName=Model, Path=SubViewBVisibility}" />
</Grid>
我想做的是:SubViewModelB拥有一个绑定到SubViewB的属性。当ParentViewModel中发生某些事件时,我希望更改该属性。我认为这应该通过将SubViewModelB中的属性绑定到ParentViewModel中的属性来完成,但我不太确定如何实现?我在ParentView.xaml中尝试了以下内容:
<local:SubViewB Visibility="{Binding ElementName=Model, Path=SubViewBVisibility}" SomeProperty="{Binding ElementName=Model, Path=WhatIWantThePropertyToBe}" />
但是这并没有帮助我解决问题。那么该怎么办呢?我知道我可以通过MVVM Light工具包中的消息传递来解决,但这似乎不太适合我正在尝试做的事情。有什么建议吗?
谢谢。