设计具有微小差异的WPF GUI

时间:2016-03-12 12:14:36

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

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

  • 搜索TextField
  • 用于类别选择的ComboBox
  • ListBox显示基于类别的结果

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

假设菜单名为添加新A 添加新B 添加新C

点击添加新的时,它应该启动" base / parent"具有上述组件的GUI。

单击添加新B 时,它应该启动与基础相同的GUI,除了它还应该有几个单选按钮。

添加新C 也是如此,只有差异是几个简单的控件。

如何使用WPF有效地完成此操作?我应该设计一个包含所有元素的GUI并隐藏例如radiobuttons如果从"添加新A"?

开始

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

2 个答案:

答案 0 :(得分:0)

  

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

我认为这取决于你是什么,并尝试用图形表示。当我使用颜色选择器时,我创建了多个控件,这些控件都包含相同的控件,但不同的属性和转换算法。在我见过的大多数MVVM实现中,确实是这样做的。

您可以考虑的另一件事是制作一个基本UserControl,例如Panel,其中包含所有UserControl所需的所有控件和属性,然后创建后续UserControl,如CalendarPanel或{{1} },它基于NotebookPanel,但指定了新的控件和属性。

这方面的一个例子可以在这里找到: How can a WPF UserControl inherit a WPF UserControl?

一开始学习起来很复杂,但是一旦掌握了它就会变得非常有趣:)

答案 1 :(得分:0)

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

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