我试图找到一种方法将WPF数据网格绑定到我从制表符分隔的文本文件中读取的未知数量的字符串。我有一个视图,我在后面的代码中设置了datacontext,我想我会在构造函数代码中设置datagrid,如下所示:
def flatten(val):
print('--------', val, '----------')
o = []
for thing in val:
# print(thing, type(thing))
if isinstance(thing, int):
o.append(thing)
if isinstance(thing, list):
o.append(i for i in thing if isinstance(i, int))
print(o)
return o
if __name__ == '__main__':
# flatten([0, 1, 2])
flatten([0, [1], 2])
prints:
[0, <generator object flatten.<locals>.<genexpr> at 0x7fe1d113b150>, 2]
ViewModel有一个ObservableCollection lParams,我想将数据网格绑定到:
public MainWindow(FileParametersViewModel vm)
{
InitializeComponent();
DataContext = vm;
dataGrid.ItemsSource = vm.lParams;
for (int i = 0; i < vm.ParamNames.Count(); i++)
{
DataGridTextColumn col = new DataGridTextColumn();
col.Binding = vm.lParams.pArray[i];
col.Header = vm.ParamNames[i];
dataGrid.Columns.Add(col);
}
}
每个列都将绑定到FileSheetParameters(pArray)中List的成员:
private ObservableCollection<FileSheetParameters> _lParams;
public ObservableCollection<FileSheetParameters> lParams
{
get { return _lParams; }
set
{
if (value != _lParams)
{
_lParams = value;
NotifyPropertyChanged("lParams");
}
}
}
我在读取文本文件的每一行时填充List。
我的问题是我实际上不能像在第一个代码块中那样引用lParams.pArray。我得到一个编译时错误(以及红色波浪形),&#34; ObservableCollection不包含&#39; pArray&#39;的定义。但是pArray是集合中的一类东西的成员。 。 。我做错了什么?
如果我只设置数据网格的Items源,并且不进行任何列特定绑定,那么我得到一个空格,其最后一列标题为pArray,每个单元格显示&#34;(集合)&#34; 。 。 。我使用了DataTable而不是ObservableCollection,但这种行为不是我喜欢的。