How to set the DataSource of a DataGrid in WPF?

霸气de小男生 提交于 2019-12-29 06:13:48

问题


I need to set a table from a database to be the DataSource of a GridGrid in WPF. In Windows Forms the property is called DataSource but in WPF no such property exists, so how can i do it?


回答1:


You can use the ItemsSource property :

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

If you prefer to use code-behind rather than a binding, just give a name to the ListView and set the ItemsSource property in code:

listView1.ItemsSource = YourData;

You can also use the ItemsSource property with other list controls (DataGrid, ListBox, ComboBox, etc), since it is defined in the ItemsControl base class.


EDIT: if the data source is a DataTable, you can't assign it directly to ItemsSource because it doesn't implement IEnumerable, but you can do it through a binding:

listView1.SetBinding(ItemsControl.ItemsSourceProperty, new Binding { Source = YourData });



回答2:


This is simple an example:

XAML part :

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

C# part :

... [code to read and fill your table ] ...

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

And now your DataGrid will be filled with your DataTable




回答3:


The GridView is a view and not a standalone control as far as i know, you would normally use it as the view of a ListView. In WPF the property for data population is called ItemsSource, you probably want to either use a ListView or DataGrid to display your data that way.




回答4:


You can use below both ways to bind the datatable to datagrid in WPF.

 datagrid.ItemSource = mydt.DefaultView();

 datagrid.DataContext = mydt.DefaultView();


来源:https://stackoverflow.com/questions/5398441/how-to-set-the-datasource-of-a-datagrid-in-wpf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!