【问题标题】:Selected Item of Treeview树视图的选定项
【发布时间】:2015-11-07 18:14:50
【问题描述】:

我想使用命令参数中的上下文菜单从用户右键单击的树视图中获取 selectedItem。我不明白这里的相对来源应该是什么。请帮忙

        <Grid.Resources>
            <HierarchicalDataTemplate x:Key="ChildTemplate" ItemsSource="{Binding Path=ChildSymbolList}" >
                <StackPanel Orientation="Horizontal" Margin="2">
                    <TextBlock Text="{Binding Path=Name}" FontWeight="Bold">
                    </TextBlock>
                </StackPanel>
            </HierarchicalDataTemplate>
        </Grid.Resources>  

            <TreeView Name="Tree" ItemsSource="{Binding ItemList}" ItemTemplate="{StaticResource ChildTemplate}">
                <TreeView.ContextMenu>
                    <ContextMenu StaysOpen="true">
                        <MenuItem Header="MyMenu" Height="20" Command="{Binding RemoveMyCommand}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeView}}}">
                        </MenuItem>
                    </ContextMenu>
                </TreeView.ContextMenu>

            </TreeView>

我收到一个错误

找不到与引用“RelativeSource FindAncestor, AncestorType='System.Windows.Controls.TreeView', AncestorLevel='1'' 的绑定源。

【问题讨论】:

  • 请分享您的ItemTemplate ChildTemplate
  • 我已经用子模板更新了我的问题

标签: c# wpf xaml treeview


【解决方案1】:

试试这个:

 <MenuItem Header="MyMenu" Height="20" Command="{Binding RemoveMyCommand}" CommandParameter="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}">
                    </MenuItem>

ContextMenu.PlacementTarget 属性

获取或设置 ContextMenu 打开时相对于其定位的 UIElement。

【讨论】:

  • 这行得通。太感谢了。你能解释一下吗?
  • 实际上 contextMenu 不是同一个可视化树的一部分。所以你不能在上下文菜单上找到父级或祖先。
猜你喜欢
  • 2013-06-07
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 2011-07-18
  • 1970-01-01
相关资源
最近更新 更多