在树型视图上下文菜单调用TreeViewItem的方法?
-
21-08-2019 - |
题
我有一个TreeView
设置,使得每个TreeViewItem
具有施加作为Style
右击上下文菜单。是这样的:
<Grid.Resources>
<ContextMenu x:Key="contextMenu">
<MenuItem Header="Save" IsEnabled="{Binding Path=Saveable}"/>
<MenuItem Header="Copy" IsEnabled="{Binding Path=Copyable}"/>
<MenuItem Header="Remove" IsEnabled="{Binding Path=Removeable}"/>
</ContextMenu>
<Style TargetType="TreeViewItem">
<Setter Property="ContextMenu" Value="{StaticResource contextMenu}" />
</Style>
</Grid.Resources>
Saveable,能够复制和可拆卸的是来自这些会用来作为TreeViewItem
对象属性。
当用户点击一个MenuItem
我正在寻找的是,它会点击所选对象的适当的方法。因此,点击“保存” MenuItem
会叫object.Save()
,“复制”呼吁object.Copy()
等,但我不知道语法是什么样子,或者想法是否是在典型的WPF风格方面还算可以接受。我知道我可以创建在包含窗口的新事件处理程序,但我宁愿选择项目本身来处理事件。
思想?
谢谢!
解决方案
不幸的是,我不认为有这样做的一个自动化的方式。最接近的选择是建立在RoutedUICommand
每个项目ContextMenu
,然后创建一个CommandBinding
为每个类。如果你想那些去TreeViewItem
,你可能需要继承TreeViewItem
并设置CommandBindings
那里。
,我认为可能的工作将是为EventSetter
添加MenuItem.Click
到TreeViewItem
风格的一个选项。然而,没有工作 - 这可能是因为在ContextMenu
的项目是从TreeViewItems
不同的视觉树
不隶属于 StackOverflow