我想让我的应用程序(C# + WPF)的用户构建自己的主题和皮肤。实现这一目标的最佳方法是什么?是否有一些示例或者我需要寻找某种“皮肤引擎”?
来自网络开发,我通常同时使用 XAML 和图像来构建 UI ......但是这样所有源都将被“硬编码”,嵌入到主 exe 或某些 dll 中......
相反,我想要一些包含所有参数(如颜色、间距、尺寸、字体大小等)的文本文件以及包含在 jpg 或 png 格式的文件夹中的所有图像。可能吗?
谢谢!
我不知道有任何预构建的 WPF 蒙皮引擎允许用户选择颜色并更新应用程序。但是,我在 WPF 应用程序中对您的“具有所有参数的文本文件......”使用了类似的方法,并且效果相对较好。
我们使用了一个带有主题颜色/图标/等的 XML 文件。在运行时加载并用于使用公司定义的颜色和图像更新应用程序资源。根据您的架构,您还可以将皮肤/主题存储在数据库中。
为了使它起作用,有几个建议:
Colors
可在整个应用程序中使用的标准(例如 LightControlColor、ControlColor、DarkControlColor、LightBackgroundColor、BackgroundColor、Dark...)。这些是 XML 文件中定义的颜色,将在皮肤/主题更改时更新。Brushes
定义将在所有 XAML 中使用的标准集。这些画笔将使用Colors
,因此 ControlBackgroundBrush 可以SolidColorBrush
由其中一种Colors
(从上面)组成,也可以LinearGradientBrush
由多种颜色组成。DynamicResource
,而不是StaticResource
这样当您Color
根据 XML 文件更新资源时,所有内容都会更新。Colors
因为Application.Resources
在DynamicResources
呈现视觉元素时会对其进行评估。在加载、解析和合并皮肤时,启动画面是一种吸引用户的好方法。