我正在开发一个Sticky Notes项目并在WPF中执行UI,显然是将MVVM作为我的架构设计选择。我对我的Model,View和ViewModel应该有什么想法。
我有一个名为Note的类,这是它的样子:
class Note
{
public Guid ID { get; set; }
public string Note { get; set; }
}
我还有User,它存储了Notes的集合:
public class User
{
public Guid ID { get; set; }
public Dictionary<Guid, Note> Notes = new Dictionary<Guid,Note>();
}
所以现在我需要制作我的Model和ViewModel。首先,我想要采用最明显的方法,即Note本身就是Model,然后为ViewModel提供NoteViewModel。但后来我想,如果我将User作为模型并拥有ViewModel的UserViewModel类,该怎么办?如果我这样做,我该如何实现INotifyPropertyChanged。如果我的模型是Note,则INotifyPropertyChanged实现很简单。非常感谢您对此的看法。
答案 0 :(得分:0)
我认为你需要拓宽你对模型的看法。简而言之: 该模型是您将要使用的“对象”的表示(可以是具有表或POCO的数据库,就像您已定义的那样)。用户和注释都可能是模型的一部分,就像客户端表和 clientOrders 表是数据库中模型的一部分一样。 ViewModel处理与模型交互的业务逻辑,并通过wpf属性绑定将该数据公开给视图。
对于INotifyPropertCHanged,这是一个简单的用法(vb):
Imports System.ComponentModel
Public Property CustomerName() As String
Get
Return Me.customerNameValue
End Get
Set(ByVal value As String)
If Not (value = customerNameValue) Then
Me.customerNameValue = value
NotifyPropertyChanged()
End If
End Set
End Property
C#:
using System.ComponentModel
public string CustomerName
{
get
{
return this.customerNameValue;
}
set
{
if (value != this.customerNameValue)
{
this.customerNameValue = value;
NotifyPropertyChanged();
}
}
}
希望这会有所帮助
答案 1 :(得分:0)
有关如何执行此操作的更具说明性的方法,请访问YouTube。底线是UserViewModel将是父视图模型,而多个NoteViewModel将是子视图模型。父视图模型将负责创建子视图模型。享受视频,就像作者所说 - 快乐的编码!