WPF Usercontrol与父视图/ viewmodel的交互

时间:2010-06-17 16:52:45

标签: wpf user-controls datacontext

您好我有一个mainView窗口,其dataContext设置为它自己的viewModel。

在该viewModel上是一个DateTime属性,该属性又使用双向绑定绑定到主视图上的日期选择器。

<toolkit:DatePicker DateSelected="{Binding mainDateTimeProperty, Mode=TwoWay}" />

到目前为止,这一切都很好。在更改我的datetime属性时,我创建一个列表,然后绑定到主视图上其他位置的数据网格。一切正常。

我的问题是我想要添加到主视图的用户控件。我希望这个usercontrol是自包含的,所以用它自己的viewmodel创建它,但它也需要访问mainDateTimeProperty

我认为最好的方法是在usercontrol上创建一个dependencyProperty,当我在主视图中创建我的控件时,我将dp绑定到datetime,如下所示。

<uc:MyNewUserControl DateProperty="{Binding mainDateTimeProperty}" />

麻烦的是我如何让usercontrol使用它的viewmodel维护datacontext但仍然将依赖属性绑定到主视图模型上的属性?

希望这很清楚。如有必要,可以发布更多代码。如果可能,寻找最佳实践方法。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:3)

尝试

<uc:MyNewUserControl DateProperty="{Binding Parent.DataContext.mainDateTimeProperty, Mode=TwoWay}" />

编辑: 对不起,优惠代码不正确。正确的绑定是

<uc:MyNewUserControl DateProperty="{Binding Path=Parent.DataContext.mainDateTimeProperty, RelativeSource={RelativeSource Self}, Mode=TwoWay} />