2013-07-11 19 views
0

我開始使用WPF和MVVM。我正在閱讀Code Project Article這很有趣,並提供了一個很好的快速入門。我正在使用實體框架,我很高興我已將所有實體列在ListView中。WPF MVVM查看或加入其他實體

我很好奇你將如何正確地實現查找 - 在視圖模型或創建一個新的模型。以一個人的簡單情況爲例。數據結構可能是:

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime DateOfBirth { get; set; } 
    public Toy FaveToy { get; set; } 
} 

public class Toy 
{ 
    public string Name { get; set; } 
    public string Model { get; set; } 
    public string Manufacturer { get; set; } 
} 

我希望我的列表視圖中顯示的列名字,姓氏,出生日期,最喜歡的玩具,製造商。

玩具領域將是一個組合的字符串名稱+「」 +中的模型。

所以給出了一些代碼在我已經聯繫(我撞倒Person類彌補例子着想的例子):

基類的意見

public abstract class ViewModelBase : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    protected void OnPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 

     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

我實施該人士看來

public class PersonViewModel : ViewModelBase 
{ 
    private ObservableCollection<Person> _Person; 

    public PersonViewModel() 
    { 
     _Person = new ObservableCollection<Person>(); 

     Entities context = new Entities(); 

     foreach(var person in context.Person.ToList()) 
     { 
      _Person.Add(person); 
     } 
    } 

    public ObservableCollection<Person> Person 
    { 
     get 
     { 
      return _Person; 
     } 
     set 
     { 
      _Person = value; 
      this.OnPropertyChanged("Person"); 
     } 
    } 
} 
+0

將您的ListView綁定到Persons屬性,將Fave Toy列綁定到FaveToy.Name並將製造商綁定到FaveToy.Manufacturer –

回答

0

如果我理解正確,您想通過FaveToy屬性自動訪問玩具。

通常這會在Person和Toy之間創建關係。完成後,您的Person實體類型如下所示:

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public DateTime DateOfBirth { get; set; } 
    public virtual Toy FaveToy { get; set; } 
} 

注意FaveToy上的「虛擬」。這表示可通過個人實例 .FaveToy訪問的導航屬性。這可以用XAML表示,或者通過點符號表示或使用綁定的路徑屬性。這裏是一個鏈接,討論導航屬性:http://msdn.microsoft.com/en-us/data/jj713564.aspx

如果你想通過名稱和模型的組合來表示玩具,那麼轉換器會在綁定上做伎倆。這是一個討論轉換器http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

希望這有助於鏈接...傑森

PS - 約什 - 史密斯在他的WPF和MVVM http://joshsmithonwpf.wordpress.com/a-guided-tour-of-wpf/

的討論真棒如果你是一個VB的傢伙亞歷山德羅有我看過VB的最佳討論:http://community.visual-basic.it/Alessandroenglish/archive/2010/08/13/31861.aspx

PSS - WPF和MVVM(或Windows 8和XAML)很棒。絕對值得你花時間去接。

+0

感謝您的信息Jason ...將在週末檢查出它。 – Andez