我正在编写一个WPF自定义控件库,并且正在实现与WPF默认主题一致的主题,即在我的WPF自定义控件库项目的Themes文件夹中,我有一个名为Aero.NormalColor.xaml的资源字典,将在Aero时使用.NormalColor是桌面主题。
默认的Aero.NormalColor主题定义了我想在资源字典中使用的许多资源(可以从这里下载http://go.microsoft.com/fwlink/?LinkID=158252)。
e.g。它定义了以下资源:
<LinearGradientBrush x:Key="ButtonNormalBackground" StartPoint="0,0" EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="#F3F3F3" Offset="0"/>
<GradientStop Color="#EBEBEB" Offset="0.5"/>
<GradientStop Color="#DDDDDD" Offset="0.5"/>
<GradientStop Color="#CDCDCD" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
在我的Aero.NormalColor.xaml资源字典中,我尝试使用此资源,如下所示:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/PresentationFramework.Aero,
Version=4.0.0.0,
PublicKeyToken=31bf3856ad364e35;
component/themes/aero.normalcolor.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="{x:Type myControls:MyControl}" TargetType="{x:Type myControls:MyControl}">
<Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
....
我很欣赏这些资源可能会发生变化,因此可能不建议使用这些资源,但是我仍然想知道这是否可行,是否有任何想法?
答案 0 :(得分:1)
在反编译的BAML中找到的密钥(您可以使用此处建议的任何工具查看反编译的BAML How to inspect and extract XAML style from WPF application?)与我通过问题中的链接下载的XAML文件中的密钥不对应这就是这个不起作用的原因。
在反编译的BAML中找到的键看起来像是被混淆了。当使用混淆密钥时,可以消耗资源,但是这些密钥的混淆是另一个反对这样做的论据。