使用代码访问父数据上下文

时间:2013-05-15 11:12:48

标签: wpf c#-4.0 mvvm

如果我想使用XAML绑定到父数据上下文数据,我可以编写以下内容:

<UserControl>
<RadGridView x:Name="Parentgrid">

  <RadGridView.RowDetailsTemplate>
         <DataTemplate>
               <RadGridView x:Name="childGrid" ItemsSource="{Binding DataContext.Result, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"  
                                     />
  </RadGridView.RowDetailsTemplate>

</RadGridView>
</UserControl>
  

但是我如何使用代码考虑到代码在不同的类中,让我们说附加属性。所以我能够访问发件人和args,如下所示:

 parentGrid.LoadingRowDetails += (sender, args) =>
                    {
                        RadGridView gridView = args.DetailsElement.FindName("childGrid") as RadGridView;

                        if (gridView != default(RadGridView))
                        {
                            gridView = //Should be able to access DataContext.Result
                        }


                    };

1 个答案:

答案 0 :(得分:0)

由于您正在寻找特定类型,因此您可以使用FindVisualParent等方法在此处浏览可视树:How can I find WPF controls by name or type?

此时你基本上完成了绑定的RelativeSource部分,并且可以访问返回对象的DataContext。