Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 视图模型和用户界面_C#_.net_Wpf_Mvvm - Fatal编程技术网

C# 视图模型和用户界面

C# 视图模型和用户界面,c#,.net,wpf,mvvm,C#,.net,Wpf,Mvvm,从设计的角度来看,我有一个复杂的GUI,建议将GUI(窗口)切割成ViewModels、UserControls和DataTemplates的粒度是多少。假设我有一个窗口,显示DataGrid中的实体列表,然后是组合框中的一些过滤器,一些细节 我应该创建多少个ViewModels。。。和DataTemplates和UserControls 非常感谢您提出了一个好的WPF/MVVM设计模式想法。您的问题有点笼统,真正的答案可能取决于您的应用程序。视图模型是视图的模型,因此我希望每个视图都有一个视图

从设计的角度来看,我有一个复杂的GUI,建议将GUI(窗口)切割成
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仍然是可以接受的