使用mvvm将数据从2个表绑定到数据网格

时间:2013-07-02 19:38:36

标签: wpf data-binding mvvm datagrid

我是MVVM和WPF世界的新手。我一直在寻找这个问题的答案而没有运气。 我想使用我的ViewModel类中的ObservableCollection绑定数据网格,但是提供我的ObservableCollection的数据来自2个不同的表,如下所示:

Table Location:

 - id
 - name
 - locationTypeId
 - isActive

Table LocationType:

 - id
 - name
 - isActive

所以在我的ViewModel类中,我不能有这样的东西:

public class LocationListViewModel
{
   ObservableCollection< Model.Location> dataSource;
}

没有将我的Model类修改为这样的东西:

public class Location
{

  public Int32 id {set; get;}
  public String name {get; set;}
  public Int32 locationTypeId {set; get;}
  public Boolean isActive {get; se;}

  //added property to get the location name

  public String locationTypeName {set; get;}

}

我到目前为止看到的数据绑定和视图模型的所有示例都使用了一个简单的类,它来自一个表作为observablecollection的类型。

提前致谢。

2 个答案:

答案 0 :(得分:1)

只需创建一个另外的ViewModel作为行的数据项:

public class LocationViewModel: ViewModelBase
{

  public Int32 id {set; get;}
  public String name {get; set;}
  public Int32 locationTypeId {set; get;}
  public Boolean isActive {get; se;}

  //added property to get the location name

  public String locationTypeName {set; get;}

}

然后:

public class LocationListViewModel
{
   ObservableCollection<LocationViewModel> dataSource {get;set;}
}

答案 1 :(得分:0)

我找到了一种混合2种方法的解决方案:

http://paulstovell.com/blog/dynamic-datagrid

加上Fredrik Hedblad给anwser提出的问题:

How do I bind a WPF DataGrid to a variable number of columns?