如何在组件

时间:2016-03-08 04:13:24

标签: c# wpf contextmenu

我有一个WPF应用程序,在许多地方使用相同的Menu组件。因此,我希望我的菜单是一个单独的组件,我会以某种方式调用它所需要的位置。截至目前,我的菜单视图逻辑看起来像这样。

<TreeView.ContextMenu>
    <ContextMenu DataContext="{Binding Path=PlacementTarget.Tag,RelativeSource={RelativeSource Self}}">
        <MenuItem Header="Open" Command="{Binding MenuDelegateCommand}"
                  IsEnabled="{Binding Path=OpenEnabled}"
                  CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Header}" />
        <Separator />
        <MenuItem Header="Blah Attributes">
        <MenuItem Header="Properties" Command="{Binding MenuDelegateCommand}"
                                  IsEnabled="{Binding Path=OpenEnabled}"
                                  CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Header}" />
......

到目前为止,我已经尝试将ContextMenu部分分解为自己的类,如此

<UserControl>
 <Grid>
   <ContextMenu>

但是ContextMenu与Visual Tree的交互方式不同,所以这是不行的。我想到了其他的事情,但在模板,DataTemplates和Adorners之间,我迷失了。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可能正在寻找静态资源。使ContextMenu成为顶级元素内的资源(或在单独的资源文件中,然后包含ResourceDictionary):

<TreeView ContextMenu="{StaticResource MyMenu}" />

然后参考上下文菜单:

test = "10'5\""
test_2 = '10\'5"'

print "%r" % test
print "%r" % test_2