如何在WPF中设置DataGrid的数据源?

问题描述 投票:0回答:5

我需要将数据库中的表设置为 WPF 中 GridGrid 的数据源。在 Windows 窗体中,该属性称为

DataSource
但在 WPF 中不存在这样的属性,那么我该怎么做呢?

c# wpf binding datagrid wpf-controls
5个回答
16
投票

您可以使用

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 });

11
投票

这是一个简单的例子:

XAML 部分 :

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

C#部分

... [读取并填写表格的代码] ...

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

现在您的 DataGrid 将填充您的 DataTable


2
投票
据我所知,

GridView

是一个视图,而不是一个独立的控件,您通常会将它用作
ListView
的视图。在 WPF 中,数据填充的属性称为 
ItemsSource
,您可能希望使用 
ListView
DataGrid
 来以这种方式显示数据。


0
投票
您可以使用以下两种方式将数据表绑定到WPF中的数据网格。

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

0
投票
我有这段代码,它的工作负载来自 csv 在.xaml中

<DataGrid x:Name="dataGridView1" ItemsSource="{Binding Source=ClusterList}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="ClusterNumber" Binding="{Binding ClusterNumber}"/> <DataGridTextColumn Header="ServerName" Binding="{Binding ServerName}"/> /> </DataGrid.Columns> </DataGrid>
然后我就有cs代码了

public DiscoveryView() { InitializeComponent(); ClusterList = new ObservableCollection<ClusterData>(); LoadDataFromCsv(); dataGridView1.ItemsSource = ClusterList;} public class ClusterData { public string ClusterNumber { get; set; } public string ServerName { get; set; } } public ObservableCollection<ClusterData> ClusterList { get; set; } private void LoadDataFromCsv() { using (var reader = new StreamReader("./Configs/clusterlist.csv")) { while (!reader.EndOfStream) { var line = reader.ReadLine(); var values = line.Split(','); ClusterList.Add(new ClusterData { ClusterNumber = values[0], ServerName = values[1] }); } } }
也许这段代码适合初学者,但它对我有用

© www.soinside.com 2019 - 2024. All rights reserved.