代码之家  ›  专栏  ›  技术社区  ›  Kitson88

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

  •  0
  • Kitson88  · 技术社区  · 7 年前

    我认为这个问题可能已经得到了回答,如果是这样,我会立即删除。我是WPF新手(也是C新手),我正在尽可能努力学习MVVM,但我真的很难找到一种不实现MVVM的方法 INotifyPropertyChanged 在我的模型上。

    我的模型包含从另一个引用创建的预定义对象的集合。在模型中,我有一些属性,当 Task

    public class CustomObject
    {
      private string _myTaskOutput;
    
      public CustomObject()
      {
         _myTaskOutput = MyTaskMethod();
      }
    
       //MyTaskMethod()
    
      //Get & Setter for _myTaskOutput;
    }
    

    Util-API

     public static class Util
     {
         public IEnumerable<CustomObject> GenerateObjects()
         {
             var customObjectCollection = SomeHelperMethod();
             return customObjectCollection;
         }
     }
    

    模型

       public class CustomObjectCollectionModel
       {
         private IEnumerable<CustomObject> _customObjectCollection;
    
         public CustomObjectCollectionModel()
         {
             _customObjectCollection = Util.GenerateObjects();
         }
    
         //Get & Setter for IEnumerable<CustomObject>
       }
    

    ObservableCollection 这是不可能的(这是正确的吗?)并实施 INotifyPropertyChanged 在…上 CustomObject 按预期工作,但我理解这不是正确的做事方式。

    1 回复  |  直到 7 年前
        1
  •  1
  •   mm8    7 年前

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

    CustomObjectWrapper