WPF相对源 - 找不到带引用的绑定源

时间:2013-06-17 07:21:59

标签: wpf binding listbox relativesource

你有没有这样的问题:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.UserControl', AncestorLevel='1''. BindingExpression:Path=DataContext; DataItem=null; target element is 'ContextMenu' (Name=''); target property is 'DataContext' (type 'Object')

代码:

<ContextMenu DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" 

上下文菜单位于:

ListBox-> ListBoxItemTemplate -> DataGrid -> DataGrid.ContextMenu

我在ListBox控件中还有另一个Binding,它完全没有问题。

2 个答案:

答案 0 :(得分:8)

解决方案:

1)将ContextMenu所有者的Tag属性设置为您想要的DataContext。 2)将ContextMenu的DataContext设置为

DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}} 

3)绑定你的元素:

Name_Of_Property="{Binding Tag.Name_Of_Property}"

答案 1 :(得分:4)

上下文菜单不是可视化树的一部分,因此您在绑定中使用PlacementTarget

 <ContextMenu DataContext="{Binding Path=PlacementTarget.DataContext, RelativeSource=Self}" />

这将使用DataGrid的DataContext