我正在逐行使用互操作阅读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 });
}
}
答案 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 });
}
}
}