C# 视图模型和用户界面
从设计的角度来看,我有一个复杂的GUI,建议将GUI(窗口)切割成C# 视图模型和用户界面,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,从设计的角度来看,我有一个复杂的GUI,建议将GUI(窗口)切割成ViewModels、UserControls和DataTemplates的粒度是多少。假设我有一个窗口,显示DataGrid中的实体列表,然后是组合框中的一些过滤器,一些细节 我应该创建多少个ViewModels。。。和DataTemplates和UserControls 非常感谢您提出了一个好的WPF/MVVM设计模式想法。您的问题有点笼统,真正的答案可能取决于您的应用程序。视图模型是视图的模型,因此我希望每个视图都有一个视图
ViewModels
、UserControls
和DataTemplates
的粒度是多少。假设我有一个窗口,显示DataGrid
中的实体列表,然后是组合框中的一些过滤器,一些细节
我应该创建多少个ViewModels
。。。和DataTemplates
和UserControls
非常感谢您提出了一个好的WPF/MVVM设计模式想法。您的问题有点笼统,真正的答案可能取决于您的应用程序。视图模型是视图的模型,因此我希望每个视图都有一个视图模型
我将从simple()开始,在您的示例中使用一个视图模型和视图,UI控件(DataGrid等…)直接放置在您的视图中
如果可以,从第一天开始使用DataTemplates,它们有助于保持顶层布局与模型对象的更详细布局分开
如果/当您需要在其他地方重用控件/布局/逻辑时,您可以开始将此单个视图/视图模型分解为一个视图组合或子视图或用户控件。您可能应该以类似的方式分解视图模型,以反映此组合。您的问题有点笼统,真正的答案可能取决于您的应用程序。视图模型是视图的模型,因此我希望每个视图都有一个视图模型
我将从simple()开始,在您的示例中使用一个视图模型和视图,UI控件(DataGrid等…)直接放置在您的视图中
如果可以,从第一天开始使用DataTemplates,它们有助于保持顶层布局与模型对象的更详细布局分开
如果/当您需要在其他地方重用控件/布局/逻辑时,您可以开始将此单个视图/视图模型分解为一个视图组合或子视图或用户控件。您可能应该以类似的方式分解视图模型来反映这篇文章。虽然您的问题不是很清楚,但我会尝试回答它。ViewModels
的数量是。。。由你决定
我个人的做法是将我的UI分成许多不同的自定义UserControls
,每个控件有一个ViewModel
。它让我有一个水晶般清晰的架构,有很多智能控件,每个控件设计用于一项任务。例如,对于我的manager应用程序,我有:
-一个用于列出所有用户的UserControl
-另一个设计用于创建或编辑用户的
-还有一个设计用于监视用户的活动
将应用程序分为不同的任务驱动用户控件
将有助于您:
- 更容易理解的架构
- 更紧凑的XAML,更易于增强
- 一个不让太多的
绑定到处乱飞的机会
关于DataTemplates
,同样,我通常将常规模板分为不同的resourcedictionary
无论如何,没有“正确的方式”也没有“错误的方式”,我认为只有“你的方式”。对我来说,我的代码越细粒度,就越容易理解,假设组件不够小,不足以无用。应为一个主要目标设计一个单独的组件。一旦你完成了这个分离,MVVM将帮助你很多 虽然你的问题不是很清楚,但我会尽力回答的。ViewModels
的数量是。。。由你决定
我个人的做法是将我的UI分成许多不同的自定义UserControls
,每个控件有一个ViewModel
。它让我有一个水晶般清晰的架构,有很多智能控件,每个控件设计用于一项任务。例如,对于我的manager应用程序,我有:
-一个用于列出所有用户的UserControl
-另一个设计用于创建或编辑用户的
-还有一个设计用于监视用户的活动
将应用程序分为不同的任务驱动用户控件
将有助于您:
- 更容易理解的架构
- 更紧凑的XAML,更易于增强
- 一个不让太多的
绑定到处乱飞的机会
关于DataTemplates
,同样,我通常将常规模板分为不同的resourcedictionary
无论如何,没有“正确的方式”也没有“错误的方式”,我认为只有“你的方式”。对我来说,我的代码越细粒度,就越容易理解,假设组件不够小,不足以无用。应为一个主要目标设计一个单独的组件。一旦你完成了这个分离,MVVM将帮助你很多 如果您可以指定一个示例案例,这将非常有帮助,因为我们有一些事情要讨论,这将使讨论变得更加容易。你能把你的问题说得更具体些吗?如果你能指定一个例子,这会很有帮助,因为我们有一些事情要讨论,这会使讨论更容易。你能把你的问题说得更具体些吗?如果两个UserControls
需要共享相同的数据/属性,你会如何处理?取决于它们之间的关联程度。如果需要一个相同的viewmodel用于相似的UserControls,则假设控件呈现相似的数据,则仍然可以接受。如果两个UserControls
需要共享相同的数据/属性,您将如何处理此问题?取决于它们的绑定程度。如果需要,假设控件呈现相似的数据,那么对于相似的UserControls使用相同的viewmodel仍然是可以接受的