将DataGrid中的ComboBox绑定到视图中的集合

时间:2012-11-16 07:22:32

标签: c# wpf mvvm

我有一个绑定到usercontrol的视图。在我的usercontrol上,我有一个datagrid,它绑定到我视图中的一个集合。该datagrid中的一列是DataGridComboBoxColumn,我需要在视图中将其绑定到不同的集合。 datagrid的绑定如下所示:

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

datacontext是视图,VictimVillages是我想要在datagrid中显示的集合。

我尝试使用

访问我要在组合框中显示的集合
ItemsSource="{Binding Path=Patterns,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Views:ViewPlanner}}}"

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

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

1 个答案:

答案 0 :(得分:0)

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

如果来自DataGrid的datacontext也具有Patterns Collection,则可以执行此操作

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 }}}"