【发布时间】:2011-08-19 14:12:09
【问题描述】:
在 WPF 应用程序中,我有一个 ResourceDictionary 和为 TargetType MyCustomControl 定义的 Style:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cc="clr-namespace:MyControlLibrary;assembly=MyControlLibrary" >
<Style TargetType="{x:Type cc:MyCustomControl}">
<Setter Property="Prop1" Value="1" />
<Setter Property="Prop2" Value="2" />
...
问题是我需要在 XAML 页面中为 MyCustomControl 定义一个上下文菜单,如下所示:
<Grid>
<Grid.Resources>
<ContextMenu x:Key="MyControlContextMenu">
<MenuItem Name="Name1"
Header="Header1"
Click="Cm1_Click"
.../>
....
</ContextMenu>
<Style TargetType="{x:Type ScNamespace:MyCustomControl}">
<Setter Property="ContextMenu" Value="{StaticResource MyControlContextMenu}"/>
</Style>
</Grid.Resources>
...
在这种情况下,虽然我只在网格内的样式定义中分配了一个属性,但根本不应用 ResourceDictionary 样式值。它们被页面资源样式覆盖并被忽略。
如何解决这个问题?也许有一种方法可以在 Grid.Resources 部分中引用 ResourceDictionary 以强制查找 ResourceDictionary 样式?
【问题讨论】:
-
您在哪里定义/包含第一个 ResourceDictionary?
-
@CodeNaked 在 App.xaml 中作为
Application.Resources在ResourceDictionary.MergedDictionaries中
标签: wpf xaml resources resourcedictionary