2

我想让我的应用程序(C# + WPF)的用户构建自己的主题和皮肤。实现这一目标的最佳方法是什么?是否有一些示例或者我需要寻找某种“皮肤引擎”?

来自网络开发,我通常同时使用 XAML 和图像来构建 UI ......但是这样所有源都将被“硬编码”,嵌入到主 exe 或某些 dll 中......

相反,我想要一些包含所有参数(如颜色、间距、尺寸、字体大小等)的文本文件以及包含在 jpg 或 png 格式的文件夹中的所有图像。可能吗?

谢谢!

4

1 回答 1

1

我不知道有任何预构建的 WPF 蒙皮引擎允许用户选择颜色并更新应用程序。但是,我在 WPF 应用程序中对您的“具有所有参数的文本文件......”使用了类似的方法,并且效果相对较好。

我们使用了一个带有主题颜色/图标/等的 XML 文件。在运行时加载并用于使用公司定义的颜色和图像更新应用程序资源。根据您的架构,您还可以将皮肤/主题存储在数据库中。

为了使它起作用,有几个建议:

  • 定义一组Colors可在整个应用程序中使用的标准(例如 LightControlColor、ControlColor、DarkControlColor、LightBackgroundColor、BackgroundColor、Dark...)。这些是 XML 文件中定义的颜色,将在皮肤/主题更改时更新。
  • Brushes定义将在所有 XAML 中使用的标准集。这些画笔将使用Colors,因此 ControlBackgroundBrush 可以SolidColorBrush由其中一种Colors(从上面)组成,也可以LinearGradientBrush由多种颜色组成。
  • 在任何地方使用DynamicResource,而不是StaticResource这样当您Color根据 XML 文件更新资源时,所有内容都会更新。
  • 您需要在显示主窗口之前更新 ,Colors因为Application.ResourcesDynamicResources呈现视觉元素时会对其进行评估。在加载、解析和合并皮肤时,启动画面是一种吸引用户的好方法。
  • 我们没有太多图像,但我相信我们以二进制格式将我们拥有的图像存储在 XML 中。
  • 我们构建了一个单独的应用程序来创建皮肤/主题。这是独立于主应用程序分发的,并且严格用于创建和更新皮肤。
于 2013-03-04T05:05:35.183 回答