1

我有一个这样的xaml

<Grid>
<Grid.DataContext>
    <bin:ItemsCollViewModel/>
</Grid.DataContext>
<controls:Pivot ItemsSource="{Binding Items}">
    <controls:Pivot.HeaderTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock Text="{Binding ItemName}" />                            
                <toolkit:ContextMenuService.ContextMenu>
                    <toolkit:ContextMenu >
                        <toolkit:ContextMenu.Items>                                        
                            <toolkit:MenuItem Header="Remove" />
                        </toolkit:ContextMenu.Items>
                    </toolkit:ContextMenu>
                </toolkit:ContextMenuService.ContextMenu>
            </Grid>
        </DataTemplate>
    </controls:Pivot.HeaderTemplate>
    <controls:Pivot.ItemTemplate>
        ....
    </controls:Pivot.ItemTemplate>
</controls:Pivot>

我需要将上下文菜单项的命令属性绑定到我的视图模型( ItemsCollViewModel )中的 ICommand 属性(例如TryRemove)。此TryRemove属于ItemsCollViewModel。但其父项(Pivot)的 DataContext 是Items,它是ItemsCollViewModel中的一个属性。那么如何将此上下文菜单项的命令属性绑定到其父(枢轴)父(网格)的属性。

简而言之,我如何访问控件的父级父级的数据上下文。我得到了这个如何将按钮的 DataContext 更改为父级父级 DataContext? 但编译器找不到AncestorType={x:Type Grid}

4

2 回答 2

0
<ContextMenu>
                <MenuItem Command="{Binding DatContext.TryRemove,  RelativeSource={RelativeSource AncestorType={x:Type Grid},AncestorLevel=1}  }"/>
            </ContextMenu>

也试试 AncestorLevel。我希望这会有所帮助。

于 2012-07-16T14:54:14.150 回答
0

本着迟到总比没有好的精神:

将 Name 属性添加到您的 Pivot 控件并执行以下操作: {Binding DataContext.TryRemove, ElementName=MyPivot}

于 2013-03-11T19:53:02.673 回答