我有一个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.ClickTreeViewItem风格的一个选项。然而,没有工作 - 这可能是因为在ContextMenu的项目是从TreeViewItems不同的视觉树

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top