如何查找父级父级的datacontext以进行动态控制

时间:2015-11-23 05:51:12

标签: wpf xaml contextmenu datacontext

我们有以下xaml代码,用于在单击删除菜单时显示上下文菜单和激活命令。 对于上下文菜单项,我想绑定ItemsControl的DataContext中存在的命令。我们尝试使用RelativeSource={RelativeSource TemplatedParent},但由于树是动态创建的(使用dataContext),因此无法找到DeleteCommand。

<Grid x:Name="MyGrid" >
    <ItemsControl ItemsSource="{Binding Path=TreeRoot.Children}">
      <ItemsControl.ItemTemplate>
        <HierarchicalDataTemplate>
          <StackPanel>
            <Label Background="Black"  Content="{Binding Path=DisplayText}"/>
            <TreeView ItemsSource="{Binding Converter={StaticResource myCompositeNodeConverter}}" >
              <TreeView.Resources>
                <HierarchicalDataTemplate DataType="{x:Type local:CompositeNode}" ItemsSource="{Binding Path=Children}" >
                  <TextBlock Text="{Binding Path=DisplayText}" Foreground="Black"></TextBlock>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="{x:Type local:LeafNode}" ItemsSource="{Binding Path=Children}">
                  <TextBlock Text="{Binding Path=DisplayText}"></TextBlock>
                </HierarchicalDataTemplate>
              </TreeView.Resources>
              <TreeView.ContextMenu>
                <ContextMenu >
                  <MenuItem Header="Delete" Command="{Binding DeleteCommand}" />
                </ContextMenu>
              </TreeView.ContextMenu>
            </TreeView>
          </StackPanel>
        </HierarchicalDataTemplate>
      </ItemsControl.ItemTemplate>
    </ItemsControl>
  </Grid>

我们如何将上下文菜单项的DeleteCommand绑定到ItemsControl的DataContext?

0 个答案:

没有答案