2012-11-16 82 views
0

我有一个绑定到我的usercontrol的视图。在我的用户控件上,我有一个数据网格绑定到我的视图集合。该数据网格中的一列是DataGridComboBoxColumn,我需要将其绑定到我的视图中的不同集合。 DataGrid的结合看起来是这样的:将DataGrid中的ComboBox绑定到视图中的集合

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

DataContext的是视图和VictimVillages是我想在DataGrid中显示的收集。

我曾经试图访问我想在ComboBox与

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

显示集合的集合的名称是模式,视图的类型是“ViewPlanner”,这是在Views命名空间。

我已经创建了一个依赖关系图。我需要帮助来找出黄色部分。 enter image description here

回答

0

使用的RelativeSource绑定你的时候(主要是)必须使用DataContext.YourProperty在你的绑定路径。

如果从DataGrid您的datacontext也有模式集合,你可以做到这一点

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

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

public interface IDataContextMarker4PatternCollection {} 

现在将此接口添加到您的view/usercontrol,其中Pattern Collection属性位于Datacontext中。

,现在你可以简单地使用RelativeSourceBinding

ItemsSource="{Binding Path=DataContext.Patterns,RelativeSource={RelativeSource AncestorType={x:Type local:IDataContextMarker4PatternCollection }}}" 
+0

电网不知道该模式收集的DataContext的,但你的建议不工作的代码... – Peter

+0

我放弃了。我只是给这个列命名,并在.cs文件中设置了itemssource。 – Peter

相关问题