我试图从DataTemplate内部绑定到容器的属性。我的标记的简化版本如下:
<Grid>
<Grid.Resources>
<DataTemplate DataType="{x:Type myCustomItem}">
<!--Visual stuff-->
<StackPanel>
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Item"
Command="{Binding myCustomItemsICommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type CustomContainerType}}, Path=ContainerProperty}"/>
</ContextMenu>
</StackPanel.ContextMenu>
</StackPanel>
</DataTemplate>
</Grid.Resources>
<CustomContainerType/>
</Grid>
我的方法基于this post,但它似乎并没有起作用。这个问题似乎来自于ContextMenu在可视化树中的位置。基本上我试图将Command绑定到DataTemplate的DataContext,但将CommandParameter绑定到DataTemplate外部的DataContext。
答案 0 :(得分:1)
ContextMenus
与其他控件不在同一个可视树中,有一些关于如何在该边界上进行绑定的问题,但如果不指定名称,这可能会有些困难。
ElementName
也失败了,但您可以在Binding.Source
中使用x:Reference
。