XAML覆盖控制库资源

时间:2013-11-25 12:27:26

标签: c# wpf xaml

我有一个WPF自定义控件库,它在多个应用程序之间共享。在库中我有一个资源字典,它定义了自定义控件使用的所有颜色。

但是我希望在每个应用程序项目中都有一个单独的资源字典,它定义特定于该应用程序的颜色,并且还可以覆盖库颜色值,类似于系统颜色资源可以被覆盖的方式。

我知道我可以为每个应用程序维护单独的样式,但这意味着将每个需要更改的颜色作为属性公开,这似乎毫无意义,并且仅针对仅暴露前景,背景等的WPF模型。

这可能吗?

1 个答案:

答案 0 :(得分:0)

最终解决了这个问题。

我在我的应用程序项目中创建了一个名为“ColourOverrides.xaml”的资源字典。然后我将控件库中的'Colours.xaml'文件添加到此作为合并字典,并将我的应用程序项目中的所有引用更改为指向新的ColourOverrides字典。最后,我将自定义控件中的所有颜色资源更改为“DynamicResource”。

现在我可以覆盖ColourOverrides中的资源键,它将在整个应用程序中应用。我还可以使用单独的ColourOverrides文件维护一个单独的应用程序项目,但仍然引用相同的CustomControls库。