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添加不同事件处理?
IOS/Objective-C:UIActivityViewController:针对不同的Activity类型进行自定义