首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用MVVM,如何在预定义的对象集合上实现INotifyPropertyChanged?

使用MVVM,如何在预定义的对象集合上实现INotifyPropertyChanged?
EN

Stack Overflow用户
提问于 2017-08-25 09:14:47
回答 1查看 155关注 0票数 0

我认为这个问题已经可以回答,如果是这样的话,我会立即删除。我对C#还很陌生(而且我对INotifyPropertyChanged也很陌生),我正在尽我最大的努力来跟踪MVVM,但是我真的很难找到一种方法来避免在我的模型上实现INotifyPropertyChanged

Model包含一个预定义对象的集合,这些对象是从另一个引用创建的。在模型中,我有一些属性是在Task完成时更新的。

CustomObject - API

代码语言:javascript
代码运行次数:0
运行
复制
public class CustomObject
{
  private string _myTaskOutput;

  public CustomObject()
  {
     _myTaskOutput = MyTaskMethod();
  }

   //MyTaskMethod()

  //Get & Setter for _myTaskOutput;
}

Util - API

代码语言:javascript
代码运行次数:0
运行
复制
 public static class Util
 {
     public IEnumerable<CustomObject> GenerateObjects()
     {
         var customObjectCollection = SomeHelperMethod();
         return customObjectCollection;
     }
 }

模型

代码语言:javascript
代码运行次数:0
运行
复制
   public class CustomObjectCollectionModel
   {
     private IEnumerable<CustomObject> _customObjectCollection;

     public CustomObjectCollectionModel()
     {
         _customObjectCollection = Util.GenerateObjects();
     }

     //Get & Setter for IEnumerable<CustomObject>
   }

对象引用不会改变,所以我相信拥有一个ObservableCollection是不可能的(这是正确的吗?)并且在CustomObject上实现CustomObject是按照预期的,但我理解这不是正确的做事方式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-25 09:43:39

如果CustomObject是某种域或业务对象,则可以将其包装在客户端应用程序中的视图模型类中。因此,您不必绑定到ObservableCollection<CustomObject>,而是绑定到ObservableCollection<CustomObjectWrapper>,其中CustomObjectWrapper是实现INotifyPropertyChanged接口的客户端特定类(前提是您实际上需要在UI中提供更改通知)。

实际上,您必须为从服务API中接收到的每个CustomObjectWrapper创建一个CustomObject --您可以在视图模型类中这样做--但同时,您不必使用特定于客户端的代码污染业务对象。直接绑定到特定于域的业务对象很少有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45878146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档