如何在WPF中显示datagrid?

时间:2014-03-12 05:09:02

标签: c# .net wpf xaml datagrid

我正在逐行使用互操作阅读word文档。现在我希望这些行显示在XAML代码中的数据网格上。

DataTable dt = new DataTable();
dt.Columns.Add("Text");


for (int i = 0; i < doc.Sentences.Count; i++)
{
    //string temp = doc.Paragraphs[i + 1].Range.Text.Trim();
    string temp = doc.Sentences[i + 1].Text;
    if (temp != string.Empty)
    {
        data.Add(temp);
        dt.Rows.Add(new object[] { data });
    }
}

3 个答案:

答案 0 :(得分:0)

在数据上下文中创建一个返回DataTable的属性(假设您的datacontext实现了INotifyPropertyChanged):

    private DataTable _aTable;
    public DataTable aTable
    {
        get
        {
            return _aTable;
        }
        set
        {
            _aTable= value;
            RaisePropertyChanged("aTable");
        }
    }

然后在你的xaml中为datagrid绑定ItemSource到你的dataTable属性:

    <DataGrid  AutoGenerateColumns="true" ItemsSource="{Binding aTable}" >

答案 1 :(得分:0)

在XAML中声明dataGrid:

<DataGrid x:Name="dataGrid"/>

一旦填好了DataTable,您就可以将其DataView设置为DataGrid的ItemsSource

dataGrid.ItemsSource = dt.AsDataView();

在类型DataTable的适当ViewModel中声明属性并绑定到它。

答案 2 :(得分:0)

您可以将Datatable绑定到Grid的ItemsSource,并将AutoGeneratColumns设置为“true”。

[XAML]

<DataGrid  AutoGenerateColumns="true" ItemsSource="{Binding dt}">

并[c#]

private DataTable _dt;
public DataTable dt
{
    get
    {
        return _dt;
    }
    set
    {
        _dt= value;
    }
}

Void Load()
{
  dt.Columns.Add("Text");

  for (int i = 0; i < doc.Sentences.Count; i++)
  {
    string temp = doc.Sentences[i + 1].Text;
    if (temp != string.Empty)
    { 
      data.Add(temp);
      dt.Rows.Add(new object[] { data });
    } 
  }
}