2013-04-17 36 views
1

我有一个主窗口与视图model.This主窗口使用一个用户控件,它也有自己的viewmodel。将viewmodel的属性绑定到另一个的

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

怎么会这样做呢?

+2

您应该避免让您的视图连接2个虚拟机。视图意味着尽可能在MVVM中断开连接。如果您可以访问父虚拟机中的子虚拟机,请通过父虚拟机使属性保持同步,或者使用类似来自MVVM光的Messenger在两个独立虚拟机之间进行通信。 – Viv

回答

1

你可以使用ViewModels作为模型的投影吗?

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

如果由于某种原因,你耦合意见,以自己的DataContext之外的东西,我相信你只能去可视化树通过结合使用的RelativeSource FindAncestor。我不认为你可以通过下调(例如窗口 - >控制)。

0

如果你真的绑定在一起,你可以让你的视图模型的属性Dependency Properties和您的视图模型从DependencyObject派生 - 那么你可以做..

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

如果这是一个很好的设计让你的viewmodels派生自DependencyObject是另一个问题..

你也可以尝试看着this library,允许绑定到和从POCO。

+2

由于讨论的几个原因,这是一个非常糟糕的主意[这里] (http://kentb.blogspot.com.ar/2009/03/view-models-pocos-versus.html) –

+1

@HighCore - 这是我在发布这篇文章时试图找到的文章,当我尝试阅读时做出这个决定,很好找 –

+0

@HighCore,那个链接似乎已经死了,不过。 –

0

我最终没有为我的用户控件使用模型视图,而不是整洁,但至少它的作品,并不复杂的datacontext明智。 感谢所有。

相关问题