【发布时间】:2011-06-15 03:00:12
【问题描述】:
我正在为另一个供应商提供的 WPF 复合应用程序编写一些扩展模块。该应用程序是主题化的,用户可以从多个主题中进行选择,这些主题将改变整个应用程序的外观,包括在主题管理器中适当注册的任何自定义模块。
我真的希望我的自定义扩展看起来像一个集成组件,因此我尝试仅使用在主应用程序中定义为资源的样式。由于我仍在学习 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。
我希望有更好的解决方案。样式的智能感知会很棒。
【问题讨论】: