【问题标题】:Different GUI definitions in a WPF for different customersWPF 中针对不同客户的不同 GUI 定义
【发布时间】:2014-09-19 19:02:16
【问题描述】:
我有一个为不同客户定制的项目,仅在 UI 中。代码完全一样。
现在,我复制整个项目,以便为客户获得不同的 UI(主要是按钮对齐)。是否可以只交换 UI 定义/指定在构建期间使用哪个,所以我不需要复制整个项目?
类似:
UI_cust1
UI_cust2
UI_cust3
...
使用构建
UI_cust2
【问题讨论】:
-
-
-
-
-
除了 Dreamwalkers 评论,您可能还想开始阅读有关主题/造型的内容here
标签:
c#
wpf
user-interface
【解决方案1】:
您能否提供一个从 XML 文件中读取值的配置提供程序类型的类?
然后您可以编辑每个客户的 XML。
我认为,如果您将提供程序创建为数据源,然后包含一个转换器,该转换器将键作为参数以返回特定值,您应该能够为您想要控制的每个属性创建键。
我过去曾做过类似的本地化和主题化解决方案,而且效果很好。不幸的是,我没有立即拿到代码。
【解决方案2】:
我建议您养成在所有项目中使用IOC(控制反转)容器的习惯。它强制你使用Dependency Injection,它为你提供了一个更加模块化的架构。
大多数IOC 容器支持用于注册依赖项的 XML 文件。
这样,您只需为不同的客户更改 XML 配置文件。瞧,您现在对每个客户都有不同的应用程序行为/外观。
另外,您的应用程序将更容易测试。最好在构建应用程序时使用TDD (测试驱动开发),这将使整个 IOC/DI 体验感觉非常自然。
一个好的 IOC 容器是 AutoFac,一个非常简单但功能强大的容器。