1

我正在开发一个 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 本身就是 Model,然后为 ViewModel 设置一个 NoteViewModel。但是后来我想,如果我将 User 作为模型并为 ViewModel 提供一个 UserViewModel 类会怎样。如果我这样做了,我该如何实现 INotifyPropertyChanged。如果我的模型是 Note,INotifyPropertyChanged 的​​实现很简单。您对此的想法将不胜感激。

4

2 回答 2

0

我认为你需要拓宽你对模型的看法。简而言之:模型是您将使用的“对象”的表示(可以是带有表的数据库或您定义的 POCO)。User 和 Note 都可能是模型的一部分,就像客户端表和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();
                }
            }
        }

希望这可以帮助

于 2013-03-11T19:50:41.310 回答
0

YouTube 上提供了有关如何执行此操作的更具说明性的方法。底线是 UserViewModel 将是父视图模型,而多个 NoteViewModel 将是子视图模型。父视图模型将负责创建子视图模型。享受视频,就像作者说的那样——编码愉快!

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

于 2013-03-11T21:41:39.490 回答