Xaml DataGrid从数据库表绑定

时间:2014-08-28 08:10:25

标签: c# wpf xaml binding datagrid

我有一个由xaml代码生成的Datagrid,如下所示:

<DataGrid Name="DonneesBrutes" ItemsSource="{Binding Resultat}" Margin="10,65,0,0" AutoGenerateColumns="True"  ></DataGrid>

我正在尝试将其绑定到我的数据库的一个表,名为BDDInterne的数据库和名为Resultat的表。我使用Entity Framework 5

创建了这个数据库

我找到了属性

ItemsSource="{Binding ...}" 

但我只看到了在xaml.cs上创建数据的示例,而不是数据库中的表。

希望我提供了足够的信息。如果缺少某些东西,我当然可以更新我的帖子。

如果有人已经做过这种绑定,它可以帮助我。

提前致谢。

EDIT1:

这是生成Resultat的代码:

public partial class Resultat
{
    public string NomTable { get; set; }
    public string Groupe_D_alerte { get; set; }
    public string NomChamp { get; set; }
    public string TOTMPMRQ { get; set; }
    public string SiModifie { get; set; }
    public string LibelléTOTAvant { get; set; }
    public string LibelléTOTApres { get; set; }
    public string Remarque { get; set; }
}

1 个答案:

答案 0 :(得分:0)

您不能使用EF直接绑定到数据库。

我将如何接近它(使用MVVM模式):

  1. 我视图中的DataGrid会将ItemsSource绑定到我的viewmodel上的属性,该属性将是类的集合,类似于ResultatCollection。该数据网格中的列将绑定到该类类型的属性。
  2. 我的虚拟机会使用对使用EntityFramework的服务的调用来填充ResultatCollection,并使用适合我试图显示的内容的查询。对你而言,也许就是一切。
  3. 在viewmodel属性声明中:

    private ObservableCollection<Resultat> _resultatCollection;
    public ObservableCollection<Resultat> ResultatCollection
    {
        get { return _resultatCollection; }
        set
        {
            if (value == _resultatCollection) return;
            _resultatCollection = value;
            RaisePropertyChanged(() => ResultatCollection);
        }
    }
    

    在虚拟机中的某个时刻,我会调用返回我的数据的服务,然后当它返回数据时,我将使用结果填充我的集合,如下所示:< / p>

    ResultatCollection = new ObservableCollection(loadOp.Entities);
    

    是的,这一切都假定视图的DataContext是viewmodel ...