0

我有一个绑定到我的用户控件的视图。在我的用户控件上,我有一个数据网格,它从我的视图中绑定到一个集合。该数据网格中的一列是 DataGridComboBoxColumn,我需要将其绑定到视图中的不同集合。数据网格的绑定如下所示:

DataContext="{Binding .}" ItemsSource="{Binding VictimVillages}"

datacontext 是视图,VictimVillages是我要在数据网格中显示的集合。

我试图访问我想在组合框中显示的集合

ItemsSource="{Binding Path=Patterns,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Views:ViewPlanner}}}"

集合的名称是 Patterns,视图的类型是“ViewPlanner”,在Views命名空间中。

我已经创建了一个依赖关系图。我需要帮助找出黄色部分。 在此处输入图像描述

4

1 回答 1

0

使用 RelativeSource 绑定时,您(大部分)必须在绑定路径中使用DataContext.YourProperty 。

如果 DataGrid 中的数据上下文也有 Patterns Collection 你可以这样做

ItemsSource="{Binding Path=DataContext.Patterns,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"

我经常将“MarkerInterface”用于相对绑定。这意味着我可以添加到我的视图中的空接口。

public interface IDataContextMarker4PatternCollection {}

现在将此接口添加到您的视图/用户控件中,其中模式集合属性位于数据上下文中。

现在你可以简单地使用RelativeSourceBinding

 ItemsSource="{Binding Path=DataContext.Patterns,RelativeSource={RelativeSource AncestorType={x:Type local:IDataContextMarker4PatternCollection }}}"
于 2012-11-16T07:50:29.917 回答