我认为这个问题已经可以回答,如果是这样的话,我会立即删除。我对C#还很陌生(而且我对INotifyPropertyChanged
也很陌生),我正在尽我最大的努力来跟踪MVVM,但是我真的很难找到一种方法来避免在我的模型上实现INotifyPropertyChanged
。
Model包含一个预定义对象的集合,这些对象是从另一个引用创建的。在模型中,我有一些属性是在Task
完成时更新的。
CustomObject - API
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
是不可能的(这是正确的吗?)并且在CustomObject
上实现CustomObject
是按照预期的,但我理解这不是正确的做事方式。
发布于 2017-08-25 09:43:39
如果CustomObject
是某种域或业务对象,则可以将其包装在客户端应用程序中的视图模型类中。因此,您不必绑定到ObservableCollection<CustomObject>
,而是绑定到ObservableCollection<CustomObjectWrapper>
,其中CustomObjectWrapper
是实现INotifyPropertyChanged
接口的客户端特定类(前提是您实际上需要在UI中提供更改通知)。
实际上,您必须为从服务API中接收到的每个CustomObjectWrapper
创建一个CustomObject
--您可以在视图模型类中这样做--但同时,您不必使用特定于客户端的代码污染业务对象。直接绑定到特定于域的业务对象很少有用。
https://stackoverflow.com/questions/45878146
复制相似问题