Как установить источник данных DataGrid в WPF? - PullRequest
9 голосов
/ 23 марта 2011

Мне нужно установить таблицу из базы данных в качестве источника данных GridGrid в WPF.В Windows Forms свойство называется DataSource, но в WPF такого свойства не существует, так как я могу это сделать?

Ответы [ 4 ]

14 голосов
/ 23 марта 2011

Вы можете использовать свойство ItemsSource:

<ListView ItemsSource="{Binding YourData}">
    <ListView.View>
        <GridView>
            <!-- The columns here -->
        </GridView>
    </ListView.View>
</ListView>

Если вы предпочитаете использовать выделенный код вместо привязки, просто присвойте имя ListView и задайте свойство ItemsSource в коде:

listView1.ItemsSource = YourData;

Вы также можете использовать свойство ItemsSource с другими элементами управления списком (DataGrid, ListBox, ComboBox и т. Д.), Поскольку оно определено в базовом классе ItemsControl.


РЕДАКТИРОВАТЬ: если источником данных является DataTable, вы не можете назначить его напрямую ItemsSource, потому что он не реализует IEnumerable, но вы можете сделать это через привязку:

listView1.SetBinding(ItemsControl.ItemsSourceProperty, new Binding { Source = YourData });
8 голосов
/ 03 апреля 2013

Это простой пример:

XAML часть :

<DataGrid Name="dataGrid1" Width="866" Height="auto" HorizontalAlignment="Left" VerticalAlignment="Top" />

C # part :

... [код для чтения и заполнения таблицы] ...

da.Fill(myDataTable);
dataGrid1.ItemsSource = myDataTable.DefaultView;

И теперь ваша DataGrid будет заполнена вашей таблицей DataTable

1 голос
/ 23 марта 2011

GridView - это представление, а не автономный элемент управления, насколько я знаю, вы обычно используете его как представление ListView. В WPF свойство для заполнения данных называется ItemsSource, вы, вероятно, хотите использовать ListView или DataGrid для отображения ваших данных таким образом.

0 голосов
/ 02 ноября 2017

Вы можете использовать оба способа привязки данных к сетке данных в WPF ниже.

 datagrid.ItemSource = mydt.DefaultView();

 datagrid.DataContext = mydt.DefaultView();
...