我有一个CustomControl B,它使用DataContext / MVVM(viewModelB)。现在,我想将CustomControl的一个属性绑定到另一个控件A(使用viewModelA作为DataContext)。
所以我有两个想法:
每当viewModelA中的PropA更改时,我都可以直接更新viewModelB中的PropB。但这在viewModels之间创建了一个依赖关系,这对我来说似乎很丑陋。还是这是MVVM模式中的一种常见方法,无法避免?
作为替代方案,我可以考虑CustomControlB上的依赖项属性,并通过绑定将其连接到CustomControlA的viewModel,如下所示:
<myControlB PropB={Binding ElementName=myControlA, Path=DataContext.PropA} />
。
到目前为止,一切都很好,但是依赖属性现在已在视图上定义。我应该如何可视化?
a)我应该将值(从属性包装器)传输到viewModelB并从viewB的XAML代码绑定到它吗?
b)还是应该直接从B的codeBehind更新视图?这仍然是正确的MVVM“样式”吗?
您会推荐哪个选项?
问候
安德烈亚斯
只要ViewModelA不主动更新ViewModelB,两个视图模型之间就没有真正的结合。我的意思是,如果您的主视图模型(同时知道两个视图模型)是连接绑定的模型,则视图模型仍然是松散耦合的。
所以对我来说,这些都不错:
MainViewModel
注册ViewModelA
的属性更改事件和修改ViewModelB
的财产是必要的。这里MainViewModel
了解两个视图模型,但彼此之间一无所知。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句