【发布时间】:2013-03-11 19:33:43
【问题描述】:
我正在开发一个 Sticky Notes 项目并在 WPF 中制作 UI,并且显然将 MVVM 作为我的架构设计选择。我正在重新考虑我的模型、视图和视图模型应该是什么。
我有一个名为 Note 的类,如下所示:
class Note
{
public Guid ID { get; set; }
public string Note { get; set; }
}
我也有用户,它存储笔记的集合:
public class User
{
public Guid ID { get; set; }
public Dictionary<Guid, Note> Notes = new Dictionary<Guid,Note>();
}
所以现在我需要制作我的模型和视图模型。首先,我想采用最明显的方法,即 Note 本身就是模型,然后为 ViewModel 设置一个 NoteViewModel。但是后来我想,如果我将 User 作为模型并为 ViewModel 提供一个 UserViewModel 类会怎样。如果我这样做了,我该如何实现 INotifyPropertyChanged。如果我的模型是 Note,INotifyPropertyChanged 的实现很简单。非常感谢您对此的想法。
【问题讨论】:
-
什么?? UserVM 应该有一个 NoteVM 列表。就那么简单。我不明白你的问题。另外,不要使用字典代替列表。字典使事情变得过于复杂并添加了不需要的额外代码。
-
字典和列表通常在视图模型中没有位置。也许你的意思是 ObservableCollection。
-
我没有将字典或列表放在视图模型中
-
拥有 NoteVM 列表的 UserVM 听起来是个有趣的想法。因此,您所说的 HighScore 是为 Note 提供一个单独的 ViewModel,然后为 User 提供另一个 ViewModel。那么我是否应该将 NoteViewModel 中的事件绑定到 UserViewModel 中的事件?这可以接受吗?我可以通过很多方式做到这一点,我只想以正确的方式做到这一点。这不仅仅是完成工作,而是遵循最佳模式实践。