我有一个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之间,我迷失了。
非常感谢任何帮助。
答案 0 :(得分:1)
您可能正在寻找静态资源。使ContextMenu成为顶级元素内的资源(或在单独的资源文件中,然后包含ResourceDictionary):
<TreeView ContextMenu="{StaticResource MyMenu}" />
然后参考上下文菜单:
test = "10'5\""
test_2 = '10\'5"'
print "%r" % test
print "%r" % test_2