【发布时间】:2017-04-16 20:09:25
【问题描述】:
我正在尝试找到一种方法将 WPF 数据网格绑定到我从制表符分隔的文本文件中读取的未知数量的字符串。我有一个视图,我在后面的代码中设置了 datacontext,我想我会在构造函数代码中设置 datagrid,如下所示:
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);
}
}
ViewModel 有一个 ObservableCollection lParams 我想将数据网格绑定到:
private ObservableCollection<FileSheetParameters> _lParams;
public ObservableCollection<FileSheetParameters> lParams
{
get { return _lParams; }
set
{
if (value != _lParams)
{
_lParams = value;
NotifyPropertyChanged("lParams");
}
}
}
每一列都将绑定到 FileSheetParameters (pArray) 中的 List 的成员:
public class FileSheetParameters
{
public FileSheetParameters()
{
SheetExists = false;
IsPlaceholder = false;
pArray = null;
}
public bool SheetExists { get; set; }
public bool IsPlaceholder { get; set; }
public List<string> pArray { get; set; }
}
我在读取文本文件的每一行时填充列表。
我的问题是我实际上无法像在第一个代码块中那样引用 lParams.pArray。我得到一个编译时错误(以及红色波浪线)“ObservableCollection 不包含'pArray'的定义。但是 pArray 是集合中事物类的成员......我做错了什么?
如果我只是设置数据网格的 Items 源,并且不执行任何特定于列的绑定,那么我会得到一个空网格,其中最后一列标题为 pArray,每个单元格都显示 "(Collection)" 。 . .我使用了 DataTable 而不是 ObservableCollection,但这种行为不是我喜欢的。
【问题讨论】:
标签: wpf datagrid observablecollection