所有窗口的全局上下文菜单资源

时间:2012-08-30 08:52:33

标签: wpf contextmenu

我正在寻找一种为我的WPF项目中的所有窗口创建全局资源的方法。 我有各种不同控件的窗口,但它们都应该具有相同的上下文菜单,例如按钮的上下文菜单:

        <Button.ContextMenu>
            <ContextMenu>
                <MenuItem Header="1"/>
                <MenuItem Header="More">
                    <MenuItem Header="2"/>
                    <MenuItem Header="2" IsCheckable="True"/>
                    <MenuItem Header="2" IsCheckable="True"/>
                    <MenuItem Header="2" IsEnabled="False"/>
                    <MenuItem Header="More">
                        <MenuItem Header="3"/>
                        <MenuItem Header="More">
                            <MenuItem Header="4"/>
                        </MenuItem>
                    </MenuItem>
                </MenuItem>
            </ContextMenu>
        </Button.ContextMenu>

也应该可以在自己不同窗口的标签上使用。

类似的东西:

resource file: contextMenu
wpf form 1: use contextMenur resource for button
wpf form 2: use contextMenur resource for label
wpf form 3: use contextMenur resource for combobox

我读过的所有资源教程都只在同一个窗口中提供了资源

2 个答案:

答案 0 :(得分:2)

将其添加到App.xaml文件的<Application.Resources>部分。

<Application ...>
   <Application.Resources>
      <SolidColorBrush x:Key="somebrush" ... />
   </Application.Resources>
</Application>

其他地方:

   <Grid Background="{StaticResource somebrush}">
      ...
   </Grid>

(来自M.A. Stoecker的MCTS Training Kit Windows Applications Development)

因此,您将ContextMenu放入Resources,给它一个x:Key,然后写

   <Button ...>
       <Button.ContextMenu>
           <StaticResource ResourceKey="keyThatWasGiven" />
       </Button.ContextMenu>   
   </Button>

答案 1 :(得分:2)

您可以将其放在一个独立的ResourceDictionary中,并使用MergedDictionaries在任何Window中引用它(参见示例部分)。