WPF中的粘滞便笺项目。模型,视图,ViewModel

时间:2013-03-11 19:33:43

标签: c# .net wpf xaml mvvm

我正在开发一个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实现很简单。非常感谢您对此的看法。

2 个答案:

答案 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将是子视图模型。父视图模型将负责创建子视图模型。享受视频,就像作者所说 - 快乐的编码!

http://www.youtube.com/watch?v=Dzv8CtUCchY