我正在为另一家供应商提供的WPF Composite应用程序编写一些扩展模块。该应用程序是主题,并为用户提供了从多个主题中进行选择的选项,这些主题将改变整个应用程序的外观,包括适当地向主题管理器注册自己的任何自定义模块。
我真的希望我的自定义扩展看起来像一个集成组件,所以我试图只使用在主应用程序中定义为资源的样式。由于我还在学习XAML的细微差别,我通过反复试验来塑造更多风格。
我想知道是否有一种“发现”不同装配中可用样式的方法。这是我目前正在做的一个例子。
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<common:DesignTimeResourceDictionary Source="/Vendor.Desktop.WPFCommon;component/themes/generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Border
Background="{DynamicResource LightGradientBackgroundBrush}"
Margin="0"
>
LightGradientBackgroundBrush
在供应商程序集中定义。通过包含上面的ResourceDictionary
,样式在设计时出现,并且画笔在XAML编辑器中没有下划线。
我可以找到定义的其他样式吗?我只知道那种风格,因为它是在供应商提供的样本中提到的。
编辑:
我知道反射器的BAML加载项,但它不能用于反射器7,除非它已被重新编译/修补。有人已经完成了here though。
我希望有更好的解决方案。风格的智能感知会很棒。
答案 0 :(得分:4)
曾经有一个适用于viewing BAML resources的Reflector加载项。但是,由于Redgate撞毁了派对,我有一段时间没有使用过Reflector。它可能不适用于当前版本。
答案 1 :(得分:0)
您知道资源字典的位置,因此您应该能够在代码中加载它并枚举可用资源。这至少可以让您了解可用的内容。
请参阅此链接:http://blogs.claritycon.com/leeroth/2009/05/20/load-xaml-resource-dictionaries-at-runtime/
枚举Keys属性并使用item属性访问资源。您可以根据需要获得详细信息,但至少应该能够吐出资源名称。