我正在尝试从文件中获取数据。该文件首先有三行描述该文件的文本,然后是下面数据的标题。我设法提取了那个。我遇到的问题是将数据放在标题行下方。标题行下面的数据可能看起来像“1 2 3 4 5 6 7 8 9 abc”。
DataGrid dataGrid1 = new DataGrid();
masterGrid.Children.Add(dataGrid1);
using (TextReader tr = new StreamReader(@filename))
{
int lineCount = 1;
while (tr.Peek() >= 0)
{
string line = tr.ReadLine();
{
string[] data = line.Trim().Split(' ');
Dictionary<string, object> sensorData = new Dictionary<string, object>();
for (int i = 0, j = 0; i < data.Length; i++)
{
//I know that I'm delimiting the data by a space before.
//but the data from the text file doesn't necessarily have
//just one space between each piece of data
//so if I don't do this, spaces will become part of the data.
if (String.Compare(data[i]," ") > 0)
{
sensorData[head[j]] = data[i];
j++;
}
}
sensorDatas.Add(sensorData);
sensorData = null;
}
lineCount++;
}
}
dataGrid1.DataContext = sensorDatas;
我无法弄清楚为什么这样做不起作用。如果我改变“dataGrid1.DataContext = sensorDatas;”到“dataGrid1.ItemsSource = sensorDatas;”然后我在正确的列中获取数据,但我也得到一些原始视图数据,例如:Comparer,Count,Keys,Values as columns,这是我不想要的。
有什么见解?
答案 0 :(得分:3)
在WPF中的控件上使用DataContext
property时,用于设置控件在填充具有与之关联的绑定的属性时将使用的数据源。
这与设置ItemsSource
property以指示您希望在网格中显示的数据的非常不同。是的,仍将使用绑定,但它们以不同的方式用于网格中显示的数据,而不是用于驱动网格本身配置的数据(这是DataContext
所做的)。
相反,您似乎允许网格为您自动生成列。而是指示应关闭列的自动生成,然后设置要显示的列。然后,当您设置ItemsSource
时,它应该只显示您想要显示的项目。