如何将EF dataSet与WPF数据网格绑定?

时间:2015-05-12 12:38:51

标签: wpf linq entity-framework datagrid dataset

我无法正确连接我的dataSet(来自EF)和WPF数据网格。我的问题是我的数据网格显示:

  • 带有正确列标题的两个选定列(很棒:-)! )
  • 包含数据库列标题的所有其他列(包括上面两个)(我不想要这些列)

这是我的代码:

<DataGrid  Name="dataGridDomaines" Grid.Row="4" IsReadOnly="True" ItemsSource="{Binding}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Nom Domaine" Width="300" Binding="{Binding Path=NomDomaine}"></DataGridTextColumn>
            <DataGridTextColumn Header="N° Inter" Width="100" Binding="{Binding Path=idOpérateur}"></DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid>

并且:

private void Rechercher(string elementARechercher){
        using (CaveAVinContext ctx = new CaveAVinContext())
        {
            //recherche des domaines
            var domaines = ctx.Domaines
                .Where(a => a.NomDomaine.Contains(elementARechercher))
                .ToList();
            dataGridDomaines.ItemsSource = domaines;
            lblDomaines.Content = "Domaine(s) : " + domaines.Count + " resultat(s)";


        }
    }

出了什么问题?

2 个答案:

答案 0 :(得分:2)

默认情况下,DataGrid的{​​{3}}属性为true,这会导致它将所有列追加到您已直接指定的任何列的末尾。

将其设置为false,你应该好好去。

<DataGrid  Name="dataGridDomaines" Grid.Row="4" 
       IsReadOnly="True" ItemsSource="{Binding}"
       AutoGenerateColumns="false">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Nom Domaine" Width="300" Binding="{Binding Path=NomDomaine}"></DataGridTextColumn>
        <DataGridTextColumn Header="N° Inter" Width="100" Binding="{Binding Path=idOpérateur}"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

答案 1 :(得分:1)

Datagrid Autogeneratecolumns设为False。 *请注意,此属性的默认值为True