我是WPF和MVVM的新手,我正在为如何设计我的应用程序而苦苦挣扎(因此这里有很多问题),并且正在进行重构。我有一个SQL后端,并使用LINQtoSQL,因此LINQTOSQL生成的类将成为我的模型。我还没有看到如何让模型类远离视图的一个很好的综合示例 - 在我现在看到的示例中,视图绑定到ModelClass.Something,而不是具有引用ModelClass.Something的ViewModel属性。我是否认为这是错误的(如果该字段在数据库中发生变化,视图就会中断)?MVVM设计模式问题
我现在正在努力的是下拉列表。例如:我有一个名为MessageType的查找表,带有一个id和文本字段以及一个存储库方法来获取它们。所以在我看来,我想避免将DisplayMemberPath和SelectedValue路径绑定到我的Model的MessageType类的字段,所以我需要创建一个新类并在ViewModel中公开该类的属性?就像这样:
public class MessageTypeViewModel : ViewModelBase
{
public MessageTypeViewModel(MessageType t)
{
MessageTypeText = t.messageTypeText;
MessageTypeId = t.messageTypeId;
}
public string MessageTypeText { get; private set; }//bind DisplayMember and SelectedValue to these properties
public int MessageTypeId { get; private set; }
}
填充像这样:
get
{
if (textMessageSelectionOptions == null)
{
var list = repository.GetMessageTypes().Select(x=>new MessageTypeViewModel(x)).ToList();
textMessageSelectionOptions =new ReadOnlyCollection<MessageTypeViewModel>(list);
}
return textMessageSelectionOptions;
}
而且我对mission.MessageType因为我有一个外键消息类型让我怎么绑定组合框的SelectedItem一个任务对象现在有这个新班?我真的很努力地获得与任务对象,其子女及其父母的模式,我找不到任何人们正在使用MVVM进行CRUD操作的全面示例。我是通过顶部还是失去了一些东西?
除非您的视图模型实际上为类添加了行为(例如'INotifyPropertyChanged'实现或特定于视图的命令/属性),那么我不会将它包装在视图模型中 - 它只会导致不必要的维护 – 2012-04-20 12:44:45