将viewmodel的属性绑定到另一个属性

时间:2013-04-17 15:20:33

标签: wpf xaml mvvm

我有一个与视图模型耦合的主窗口。这个主窗口使用一个usercontrol,它也有自己的viewmodel。

我想要实现的是在主窗口的xaml中在其viewmodel的一个自定义属性和一个usercontrol的viewmodel的自定义属性之间设置一个绑定。

如何做到这一点?

3 个答案:

答案 0 :(得分:1)

您是否可以将ViewModel用作模型的投影?

也就是说,您是否有一个类可以保存VM需要公开的状态(或多个操作),并让两个VM都引用此类?

如果出于某种原因, 将视图耦合到他们自己的DataContext之外的某些内容,我相信你只能通过在绑定中使用RelativeSource FindAncestor来 up 可视树。我认为你不能遍历 down (例如Window - > Control)。

答案 1 :(得分:0)

如果确实希望将它们绑定在一起,您可以使ViewModel的属性Dependency Properties和ViewModel来自DependencyObject - 那么你可以做..

 var binding = new Binding("Something");
 binding.Source = myViewModel1;
 binding.Mode = BindingMode.TwoWay;
 BindingOperations.SetBinding(viewModel2,ViewModelType.SomethingProperty,binding);

如果这是一个很好的设计,你的视图模型派生自DependencyObject是另一个问题..

您还可以尝试查看允许与POCO绑定的this library

答案 2 :(得分:0)

我最终没有为我的usercontrol使用模型视图,不是很整洁,但至少它有效并且不太复杂的数据文本。 谢谢大家。