2013-03-11 135 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(); 
       } 
      } 
     } 

希望這有助於

相關問題