我是 WPF 和 MVVM 的新手,并且在如何设计我的应用程序方面遇到了很多困难(因此这里有很多问题)并且即将进行重构。我有一个 SQL 后端并且正在使用 LINQtoSQL,因此 LINQTOSQL 生成的类将成为我的模型。我还没有看到一个很好的综合示例,说明如何使模型类远离视图 - 在我现在查看的示例中,视图绑定到 ModelClass.Something,而不是具有引用 ModelClass.Something 的 ViewModel 属性。我认为这很糟糕(如果数据库中的该字段更改视图中断)是否正确?
我目前正在努力的是下拉列表。示例:我有一个名为 MessageType 的查找表,其中包含一个 id 和文本字段以及一个用于获取它们的存储库方法。所以在我看来,我想避免将 DisplayMemberPath 和 SelectedValue 路径绑定到模型的 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 绑定到mission.MessageType?我真的很难用任务对象、它的孩子和它的父母来获得模式,我找不到任何全面的例子来说明人们使用 MVVM 进行 CRUD 操作。我是不是太过分了还是错过了什么?