【问题标题】:Designing WPF GUIs with minor differences设计具有细微差异的 WPF GUI
【发布时间】:2016-06-27 17:15:09
【问题描述】:

三个具有几乎相同设计的 GUI 从不同的应用程序菜单启动,它们都将具有:

  • 搜索文本字段
  • 用于类别选择的组合框
  • ListBox 根据类别显示结果

当然还有几个用于搜索等的按钮。

假设菜单名为Add new AAdd new BAdd new C

Add new A被点击时,它应该启动带有上述组件的“base/parent”GUI。

Add new B 被点击时,它应该启动一个与 base 相同的 GUI,除了它还应该有几个单选按钮。

添加新的 C 也是如此,唯一的区别是几个简单的控件。

如何使用 WPF 有效地完成这项工作?我应该设计一个包含所有元素的 GUI 并隐藏例如单选按钮是否从“添加新 A”开始?

或者我应该使用三种不同的 XAML 并最终使大多数代码和设计元素相同。

【问题讨论】:

    标签: c# wpf visual-studio wpf-controls


    【解决方案1】:

    或者我应该使用三种不同的 XAML 并最终使大多数代码和设计元素相同。

    我认为这取决于您要以图形方式表示的内容。当我使用颜色选择器时,我创建了多个控件,它们都包含相同的控件,但属性和转换算法不同。在我见过的大多数 MVVM 实现中,确实是这样完成的。

    您可以考虑的另一件事是创建一个基本 UserControl,例如 Panel,其中包含所有 UserControl 所需的所有控件和属性,然后创建后续 UserControl,例如 CalendarPanelNotebookPanel,它们基于Panel,但指定新的控件和属性。

    可以在此处找到一个示例: How can a WPF UserControl inherit a WPF UserControl?

    一开始学起来很复杂,但是一旦掌握了它就超级有趣:)

    【讨论】:

      【解决方案2】:

      如果所有三个视图都可以具有单个视图模型,则将模式 enum 添加到您的视图模型中,并基于此 enum 在您的视图中显示/隐藏某些部分。这种方法最容易测试和维护。

      但有时,应用程序中的某些地方应该看起来相似,但具有不同的视图模型。然后我建议将这些视图模型拆分为可以共享的较小的视图模型。然后,您将能够从较小的共享组件组成您的视图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        • 2011-04-26
        相关资源
        最近更新 更多