我正在寻找一种为我的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
我读过的所有资源教程都只在同一个窗口中提供了资源
答案 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
中引用它(参见示例部分)。