C# 使用1个模型的多个视图模型?
我有viewmodel1和viewmodel2 Viewmodel1需要显示模型中包含的某种类型的列表中的数据。 Viewmodel2需要将数据输入到模型中包含的列表中 所以Viewmodel1和Viewmodel2都需要“了解”模型 在MVVM中执行此操作的正确方法是什么C# 使用1个模型的多个视图模型?,c#,wpf,mvvm,C#,Wpf,Mvvm,我有viewmodel1和viewmodel2 Viewmodel1需要显示模型中包含的某种类型的列表中的数据。 Viewmodel2需要将数据输入到模型中包含的列表中 所以Viewmodel1和Viewmodel2都需要“了解”模型 在MVVM中执行此操作的正确方法是什么 我应该在应用程序中创建模型,并给viewmodel1和viewmodel2一个参考,还是?如果我认为ViewModel是一个模型,只为视图翻译,我会觉得这很有帮助 您有几个选择: 创建用于设置ViewModel的控制器。如
我应该在应用程序中创建模型,并给viewmodel1和viewmodel2一个参考,还是?如果我认为ViewModel是一个模型,只为视图翻译,我会觉得这很有帮助 您有几个选择:
- 创建用于设置ViewModel的控制器。如果ViewModel需要来自多个位置的信息,这通常是一个不错的选择。您可以为ViewModel提供所需所有信息的引用,也可以将其设置为普通的旧.NET对象(PONO),并让控制器为您进行设置
- 只需按照您的建议将引用传递到ViewModel。如果不同类之间不需要交互,则此选项非常有用
- 连接,可用于在模型更改时发布通知,并将通知传递给ViewModels,以便他们每个人都可以在需要时获取/存储模型
如果您以前没有做过很多依赖注入,那么请考虑通过构造函数来完成。这将帮助您避免在ViewModels准备就绪之前尝试使用ViewModels的情况,并让ViewModels完成自己的工作。您可能还想看看类似或的框架,它们可以帮助您进行这种连接,但这实际上只适用于大型企业项目(甚至不是所有项目)。
您一定是用错误的方式思考了。。在MVVM中,模型一直包含在视图模型中。。假设有一个ObservableCollection,则viewmodel中会有一个属性用于此,您应该在viewmodel的构造函数/某些方法中初始化此集合。。两个viewmodels都将像这样初始化ProductType。。在我看来,您应该尝试创建Classed For Model、ViewModel和Repository,并在其中使用IoC 这是一个关于mvvm的非常好的视频,你应该试试这个视频,并看看代码 如果您提到的列表永远不会改变,您应该尝试为此创建一个单例ViewModel,并在其他ViewModel中引用该ViewModel问候。很好<代码>模型就是它们听起来的样子:数据模型。它们是用来保存数据的虚拟对象,应用程序的其余部分可以根据需要使用这些数据
ViewModels
是反映视图的模型。例如,假设您有一个LoginViewModel
和一个ManageUsersViewModel
。这两个视图模型都可以与UserModel
数据对象一起使用,但是它们是完全不同的视图模型,用于完全不同的事情
在大多数情况下,我会将加载
模型
的责任留给视图模型
。例如,您通常不会在用户登录之前预加载用户列表,以便用户对象可用。插入时,您的LoginViewModel
将进行自己的数据库调用,以获取登录用户的用户模型,而managerUserViewModel
将进行自己的数据库调用,以获取可以修改的用户列表。您可以显示一些您的模型的代码吗?我还没有开始编写代码。例如:模型对象包含一个包含人员的列表。Viewmodel1仅在视图上显示此列表。Viewmodel2将新人员插入列表。因此,这两个视图模型都需要连接到模型对象,因此这两个视图模型都在一个视图上?我没有使用C#的经验。但即便如此,我一直被教导,业务逻辑的正确位置在模型中。更不用说数据库调用了,这始终是模型的职责。