我有一个绑定到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
命名空间中。
我已经创建了依赖关系图。我需要帮助找出黄色部分。
答案 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 }}}"