Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
mvvm模式在wpf应用中的应用_Wpf - Fatal编程技术网

mvvm模式在wpf应用中的应用

mvvm模式在wpf应用中的应用,wpf,Wpf,我是wpf新手,正在使用wpf for UI设计客户机-服务器应用程序 我有一个视图-视图模型、数据列表和通信模型 我的视图和视图模型将形成一个用户控件 以下是我的疑问: 如果我将数据列表保存在viewmodel中,其他视图模型如何访问它 若我将数据列表保存在应用程序中,以便任何视图都可以访问它,那个么我的视图模型是否能够通过绑定来更新它 如果我的视图模型直接调用我的通信模型,或者我应该在两者之间保留一个wrapper类,这将是一个很好的设计 塔克斯 sarika您应该考虑使用存储库模式来访问项

我是wpf新手,正在使用wpf for UI设计客户机-服务器应用程序 我有一个视图-视图模型、数据列表和通信模型 我的视图和视图模型将形成一个用户控件 以下是我的疑问:

  • 如果我将数据列表保存在viewmodel中,其他视图模型如何访问它
  • 若我将数据列表保存在应用程序中,以便任何视图都可以访问它,那个么我的视图模型是否能够通过绑定来更新它
  • 如果我的视图模型直接调用我的通信模型,或者我应该在两者之间保留一个wrapper类,这将是一个很好的设计
  • 塔克斯


    sarika

    您应该考虑使用存储库模式来访问项目列表。您的viewmodels应该与此存储库的抽象(例如IPeopReplepository)相对应,并且您应该通过注入(例如通过构造函数注入)将此存储库的具体实现传递到您的viewmodel中。您的具体实现可以调用您的通信模型来检索项目列表

    通常,存储库将返回一个集合类型,该集合类型不是特定于WPF的。您可能希望将其包装在viewmodel上的ObservableCollection中,以便将集合的更改通知UI

    每个viewmodel是否检索对此集合的新引用,或者它们是否都访问同一集合,将取决于您的用例,但只要该集合作为DataContext(通常是您的viewmodel)上的属性公开,则您就可以绑定到该集合以从视图中显示和更新它