绑定到ContextMenu中的两个不同DataContexts

时间:2011-11-11 22:33:17

标签: wpf xaml data-binding datatemplate

我试图从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。

1 个答案:

答案 0 :(得分:1)

ContextMenus与其他控件不在同一个可视树中,有一些关于如何在该边界上进行绑定的问题,但如果不指定名称,这可能会有些困难。

由于缺少树连接,

ElementName也失败了,但您可以在Binding.Source中使用x:Reference