Привязка объектов к сетке данных в wpf

#c# #wpf #entity-framework #datagrid

#c# #wpf #entity-framework #сетка данных

Вопрос:

В winform я делаю это :

     using (vbdadvertisementEntities context = new vbdadvertisementEntities())
    {
        var q = context.customers;
        customerBindingSource.DataSource = q;
        dataGridView.DataSource = customerBindingSource;
    }
  

Затем я попробовал это в wpf, но сетка данных просто отображается пустой :

     CollectionViewSource customerViewSource = (CollectionViewSource) FindResource("customerViewSource");
    using (vbdadvertisementEntities context = new vbdadvertisementEntities())
    {
        var q = context.customers;
        customerViewSource.Source = q;
    }
  

XAML :

 <Window x:Class="VBDAdvertisement.WCustomerMain"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WCustomerMain" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="379" Width="654" xmlns:my="clr-namespace:VBDAdvertisement" Loaded="Window_Loaded">
    <Window.Resources>
        <CollectionViewSource x:Key="customerViewSource"/>
    </Window.Resources>
    <Grid DataContext="{StaticResource customerViewSource}">
        <Grid.RowDefinitions>
            <RowDefinition Height="56*" />
            <RowDefinition Height="284*" />
        </Grid.RowDefinitions>
        <DataGrid AutoGenerateColumns="False" Grid.Row="1" Name="MainDataGrid" DataContext="{Binding}" />
    </Grid>
</Window>
  

Ответ №1:

Вы должны указать ItemsSource, указание DataContext просто предоставит контекст для привязок данных.

Нравится,

 <DataGrid AutoGenerateColumns="False" Grid.Row="1" Name="MainDataGrid" ItemsSource="{Binding}" />
  

Комментарии:

1. а также, если вы не указали столбцы для своей сетки данных (в xaml или через codebehind), установите для AutoGenerateColumns значение true