C# 如何以编程方式将数据添加到 WPF 数据网格
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11950312/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to add Data to a WPF datagrid programatically
提问by katu
How can I add data Items to a DataGridprogrammatically in WPF which do not have bindings? The DataGridhas 4 columns.
如何DataGrid在没有绑定的 WPF 中以编程方式添加数据项?将DataGrid有4列。
采纳答案by Joerg Reinhardt
It is not very clear, what You like to do. I guess, You have defined some place where You want to put the DataGrid. For illustration purposes, I created a new WPF project and use the code provided by chridram, who posted the first answer.
不是很清楚,你喜欢做什么。我想,你已经定义了一些你想要放置 DataGrid 的地方。出于说明目的,我创建了一个新的 WPF 项目并使用了 chridram 提供的代码,他发布了第一个答案。
In the following MainWindow.xaml I name the Grid MainGrid to access it in the code behind:
在下面的 MainWindow.xaml 中,我将 Grid MainGrid 命名为在后面的代码中访问它:
<Window x:Class="WpfExperiments.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Name="MainGrid"/>
</Window>
The DataItem class is not a WPF class, but a custom class created by Yourself:
DataItem 类不是 WPF 类,而是自己创建的自定义类:
public class DataItem
{
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; }
public string Column4 { get; set; }
}
To let the DataGrid display data stored in DataItem objects programmatically, You may do the following:
要让 DataGrid 以编程方式显示存储在 DataItem 对象中的数据,您可以执行以下操作:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// Your programmatically created DataGrid is attached to MainGrid here
var dg = new DataGrid();
this.MainGrid.Children.Add(dg);
// create four columns here with same names as the DataItem's properties
for (int i = 1; i <= 4; ++i)
{
var column = new DataGridTextColumn();
column.Header = "Column" + i;
column.Binding = new Binding("Column" + i);
dg.Columns.Add(column);
}
// create and add two lines of fake data to be displayed, here
dg.Items.Add(new DataItem { Column1 = "a.1", Column2 = "a.2", Column3 = "a.3", Column4 = "a.4" });
dg.Items.Add(new DataItem { Column1 = "b.1", Column2 = "b.2", Column3 = "b.3", Column4 = "b.4" });
}
}
I hope this helps.
我希望这有帮助。
Greetings J?rg
问候 J?rg
回答by Khalid
this a function which i use for retrive data from database
string query = "Select * from VWpatientinfo";
DataTable dataTableObject = new DataTable("Table Name");
这是我用来从数据库中检索数据的函数
string query = "Select * from VWpatientinfo";
DataTable dataTableObject = new DataTable("Table Name");
obj.DataRetrive(query,dataTableObject);
DataGridName.ItemsSource = dataTableObject.DefaultView;
回答by Andrew
.xaml:
.xaml:
<DataGrid x:Name="dataGrid" Margin="10">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Path=Column1}"/>
<DataGridTextColumn Binding="{Binding Path=Column2}"/>
</DataGrid.Columns>
</DataGrid>
.cs:
。CS:
public class DataItem
{
public bool Column1 { get; set; }
public string Column2 { get; set; }
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DataItem item = new DataItem();
item.Column1 = true;
item.Column2 = "test";
dataGrid.Items.Add(item);
}
}


