WPF 中针对不同客户的不同 GUI 定义

Posted

技术标签:

【中文标题】WPF 中针对不同客户的不同 GUI 定义【英文标题】:Different GUI definitions in a WPF for different customers 【发布时间】:2014-09-19 19:02:16 【问题描述】:

我有一个为不同客户定制的项目,仅在 UI 中。代码完全一样。

现在,我复制整个项目,以便为客户获得不同的 UI(主要是按钮对齐)。是否可以只交换 UI 定义/指定在构建期间使用哪个,所以我不需要复制整个项目?

类似:

UI_cust1
UI_cust2
UI_cust3
...

使用构建

UI_cust2

【问题讨论】:

你可能想使用工厂模式 你的意思是本地化:msdn.microsoft.com/en-us/library/ms788718.aspx ? 类似***.com/questions/21638054/… 如果底层代码相同,为什么不为客户使用主题? 除了 Dreamwalkers 评论,您可能还想开始阅读有关主题/造型的内容here 【参考方案1】:

您能否提供一个从 XML 文件中读取值的配置提供程序类型的类?

然后您可以编辑每个客户的 XML。

我认为,如果您将提供程序创建为数据源,然后包含一个转换器,该转换器将键作为参数以返回特定值,您应该能够为您想要控制的每个属性创建键。

我过去曾做过类似的本地化和主题化解决方案,而且效果很好。不幸的是,我没有立即拿到代码。

【讨论】:

【参考方案2】:

我建议您养成在所有项目中使用IOC(控制反转)容器的习惯。它强制你使用Dependency Injection,它为你提供了一个更加模块化的架构。

大多数IOC 容器支持用于注册依赖项的 XML 文件。 这样,您只需为不同的客户更改 XML 配置文件。瞧,您现在对每个客户都有不同的应用程序行为/外观。

另外,您的应用程序将更容易测试。最好在构建应用程序时使用TDD (测试驱动开发),这将使整个 IOC/DI 体验感觉非常自然。

一个好的 IOC 容器是 AutoFac,一个非常简单但功能强大的容器。

【讨论】:

以上是关于WPF 中针对不同客户的不同 GUI 定义的主要内容,如果未能解决你的问题,请参考以下文章

WPF自定义控件,自定义控件中由多个button组成,如何给每个button添加不同事件处理?

避免针对具有不同注释的相同查询的计划缓存膨胀

Wpf在运行时加载dll

IOS/Objective-C:UIActivityViewController:针对不同的Activity类型进行自定义

我应该如何在Windows上创建自定义图形控制台/终端?

如何使我的自定义 HTML 小部件针对不同的屏幕尺寸显示不同?