如何从Usercontrol访问mainwindow中声明的datacontext,而不是本地访问

时间:2016-05-12 14:17:07

标签: c# wpf mvvm

在我的MainWindow我有这个:

<Window.DataContext>
    <viewModel:ActiveRecord />
</Window.DataContext>

在我的UserControl我有这个:

<UserControl.DataContext>
    <search:CustomerSearch />
</UserControl.DataContext>

在我添加这个'本地'绑定之前,我会在我的UserControl中引用'模块'绑定,如下所示:

var vm = this.DataContext as ViewModel.ActiveRecord;

但是因为我想引用2个不同的绑定,它似乎不再起作用了。我的意思是我用ActiveRecord填充值,但当我导航到另一个表单时,这些值为空。
我认为我需要做的是访问Mainwindow's DataContext,如下所示:

var vm = MainWindow.DataContext as ViewModel.ActiveRecord;

但当然DataContext不属于MainWindow

的属性

我该怎么做?

1 个答案:

答案 0 :(得分:0)

在用户控件中,您可以为用户控件上的Textblock设置相对绑定,如下所示:

         <TextBlock Text="{Binding Path=DataContext.PropertyYouWant, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}}}" />

在我看来,你似乎是通过错误的方法来解决这个问题。用户控件从其父级(即窗口)继承其数据上下文是正常的。是否可以为活动记录提供对客户搜索的访问权限?