要解决绑定到DbContext / DataSet的“Master-Detail datagrids”未进行过滤的问题,可以使用以下代码示例:
public class MasterDetailViewModel
{
public MasterModel Master { get; set; }
public List Details { get; set; }
}
public class MasterModel
{
public int Id { get; set; }
public string Name { get; set; }
}
public class DetailModel
{
public int Id { get; set; }
public int MasterId { get; set; }
public string DetailName { get; set; }
}
public class MyDbContext : DbContext
{
public DbSet Masters { get; set; }
public DbSet Details { get; set; }
}
public class MainViewModel : INotifyPropertyChanged
{
private ObservableCollection _masterDetails;
public ObservableCollection MasterDetails
{
get { return _masterDetails; }
set
{
_masterDetails = value;
OnPropertyChanged(nameof(MasterDetails));
}
}
// Add INotifyPropertyChanged implementation here...
}
public MainViewModel()
{
using (var context = new MyDbContext())
{
var masters = context.Masters.ToList();
var details = context.Details.ToList();
MasterDetails = new ObservableCollection();
foreach (var master in masters)
{
var detailList = details.Where(d => d.MasterId == master.Id).ToList();
MasterDetails.Add(new MasterDetailViewModel
{
Master = master,
Details = detailList
});
}
}
}
这样,你就可以绑定到DbContext / DataSet的“Master-Detail datagrids”,并通过使用过滤器来进行过滤。