2013-03-11 138 views
1

我正在做一个粘滞便笺项目,并在WPF中做UI,显然诉诸MVVM作为我的架构设计选择。我对我的模型,视图和视图模型应该有第二个想法。WPF中的粘滞便笺项目。模型,视图,ViewModel

我有一类被称为注意,这里是它的样子:

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>(); 
} 

使我的模型和ViewModel。首先,我正在考虑采用最明显的方法,即Note本身就是Model,然后为ViewModel提供一个NoteViewModel。但后来我想,如果我将User作为模型并为ViewModel提供UserViewModel类,该怎么办?如果我这样做,我该如何实现INotifyPropertyChanged。如果我的模型是Note,INotifyPropertyChanged实现很简单。您对此的想法将不胜感激。

+1

什么? UserVM应该有一个NoteVM列表。就那么简单。我不明白你的问题。另外,不要使用字典来代替列表。字典过度复杂的东西,并添加无需额外的代码。 – 2013-03-11 19:37:46

+1

字典和列表通常在视图模型中没有位置。也许你的意思是ObservableCollection。 – user7116 2013-03-11 19:54:53

+0

我不在视图模型中放置字典或列表 – armanali 2013-03-11 20:00:32

回答

0

如何做,这是一个更能说明问题的方式在YouTube上可用。底线是UserViewModel将是父视图模型,并且多个NoteViewModel将是子视图模型。父视图模型将负责创建子视图模型。享受视频,就像作者说的 - 快乐的编码!

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

0

我认为你需要拓宽你对模型的想法。简单地说: 该模型是您将要使用的“对象”的表示(可以是包含表或POCO的数据库,就像您定义的那样)。用户和注释都可能是模型的一部分,与客户端表和客户端订单表是数据库中模型的一部分相同。 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(); 
       } 
      } 
     } 

希望这有助于

相关问题