【发布时间】:2016-02-09 14:51:04
【问题描述】:
这是继续
我看过这个帖子:
数据网格就是这样的:
<DataGrid Name="dtgResults" Background="Transparent" AutoGenerateColumns="False"/>
其中一切似乎都运行良好,但是当我将它放入我的解决方案时它无法编译:
谁能解释一下为什么?
---编辑---
我现在意识到我误解了上面链接中的内容。 简而言之,我有一个绑定到可观察集合的数据网格。 我必须再添加两列。怎么可能?
---EDIT2---- 用于 CBreeze
dtgResults.ItemsSource = obcmMyDim;<--------previous data here
DataGridTextColumn textColumn1 = new DataGridTextColumn();
textColumn1.Header = "AAA1";
textColumn1.Binding = new Binding("AAA1");
DataGridTextColumn textColumn2 = new DataGridTextColumn();
textColumn2.Header = "AAA2";
textColumn2.Binding = new Binding("AAA2");
Application.Current.Dispatcher.BeginInvoke(new ThreadStart(() => dtgResults.Columns.Add(textColumn1)));
Application.Current.Dispatcher.BeginInvoke(new ThreadStart(() => dtgResults.Columns.Add(textColumn2)));
dtgResults.Items.Add(new { AAA1 = "Col1Row1", AAA2 = "Col2Row1"});
dtgResults.Items.Add(new { AAA1 = "Col1Row2", AAA2 = "Col2Row2" });
---编辑 3--- 对于 JH 所以简而言之,我有绑定到数据网格的可观察集合进行以下输出:
然后我用你的方法添加列:
var names = obcmMyDim.First().obcItemsName; // All entries must have the same list of obcItemsName and in the same order
for (int i = 0; i < names.Count; i++)
{
DataGridTextColumn c = new DataGridTextColumn();
c.Header = names[i];
var b = new Binding();
string str = string.Format("obcmMyDim.obcItemsMeasured[{0}]", i);
b.Path = new PropertyPath(str);
b.Mode = BindingMode.TwoWay;
c.Binding = b;
dtgResults.Columns.Add(c);
}
至于绑定数组
绑定 str 为 "obcmMyDim.obcItemsMeasured[0]" ...1....n
但我得到的是列在那里但它们是空的
【问题讨论】:
-
错误信息是什么?
-
我建议使用 DataBinding 而不是逐个添加项目。如果您来自 WinForms,则应该重新考虑将控件链接到实际数据的方式。
-
我做不到。我已经在这里发布了问题stackoverflow.com/questions/35290099/…
标签: c# wpf datagrid multiple-columns