使用WCF DTO类作为UI模型
问题描述:
我有以下DTO的定义: -使用WCF DTO类作为UI模型
[DataContract]
public class AddProductDTO
{
[DataMember]
public string Code { get; set; }
[DataMember]
public List<string> Categories { get; set; }
}
,并且目前有一个构造函数如下一个视图模型: -
public AddProdctViewModel()
{
Model = new AddProductDTO();
}
的AddProductDTO一直直接在VisualStudio 2010中添加为服务参考
在我看来,我有一个(Xceed)WPF数据网格,我希望能够直接输入类别。目前其itemssource被设置为Model.Categories。但是,这不起作用,因为Model.Categories的值为空。
这引起了我希望我能能对
- 在MVVM一些援助就OK了直接引用WCF DTO类作为模型,或者我应该在别的包装这几个问题吗?
- 为什么Model.Categories出来为空创建AddProductDTO什么时候?*
- 什么是使用WPF/WCF/MVVM来填充列表是DTO的一部分的推荐的方法?
答
我个人更喜欢使用Model
类我的数据对象,像AutoMapper到DTO的映射模型。这使我保持之类的东西验证(IDataErrorInfo
)及模型对象的属性更改通知(INotifyPropertyChanged
),而不必包括将/ WCF从
至于Model.Categories
是null
,我通常会设置时数据在第一次调用属性的get
方法以避免此类问题时,将对象列为空白列表。
public class ProductModel : INotifyPropertyChanged
{
private List<string> _categories;
public List<string> Categories
{
get
{
if (_categories == null)
_categories = new List<string>();
return _categories;
}
}
}
感谢您的建议,我改变了我的代码以反映这一点。但是,我仍然有问题需要直接在数据网格中输入。但是,似乎没有默认构造函数来允许我这样做。我想我将不得不将列表包装到另一个模型,即List ,但这似乎是很多工作要去,当它将要做的是包装一个字符串..... –
lostinwpf
2012-01-18 10:20:18
@lostinwpf你应该能够直接在DataGrid中输入来编辑列表中的字符串。如果它不适合你,我会建议发布有关你的问题的另一个问题,并确保包括你使用的代码。 – Rachel 2012-01-18 13:23:10