如何在WPF中将数据绑定到gridcontrol

时间:2014-11-07 22:48:05

标签: c# wpf linq data-binding

我正在尝试使用LINQ从数据库中选择数据并将其绑定到DevExpress GridControl。我虽然成功了。这是我的代码如下。它没有绑定任何东西,我怎么能解决这个???

public ucEmailList()
{
     InitializeComponent();

     ARYADA_EMAIL_DBEntities db_ = new ARYADA_EMAIL_DBEntities();
     var elements = from element in db_.TEST_EMAILS
                    where element.ID >4
                    select element;
     gc.DataContext = elements;

}

2 个答案:

答案 0 :(得分:3)

使用ItemsSource

gc.ItemsSource = elements.ToList();

无论如何这是个糟糕的主意。为什么不使用从数据库提供数据的ViewModel并将它在XAML中绑定到GridControl的适当属性?

编辑 - 我会采用的方式

  1. 从初始化gc
  2. 的代码中删除代码
  3. 如果您的XAML中有某处GridControl,您还应该拥有其属性:

    < dexp:GridControl // ....一些属性   ItemsSource = {Binding Data} />

  4. 内部视图初始化(参见第1点)将DataContext设置为您查看包含实际从存储库获取数据的属性Data的模型。

  5. 确保数据不是数据库中的直接对象。将它们重新映射到您的域对象。为了节省时间,您可以使用AutoMapper

答案 1 :(得分:1)

对于您的方案,您只需更改一行:

gc.ItemsSource = elements.ToList()

ToList()是必需的,因为尚未计算elements并且控件不喜欢绑定它。

作为参考,elements被定义为:

var elements = from element in db_.TEST_EMAILS
                where element.ID >4
                select element;

您想了解更多吗?

稍后,如果您对模式感兴趣,我推荐这篇文章: