我们假设有以下类(例如用途):
public class Item
{
public String Key {get;set;}
public String[] Values { get; set;}
}
为简单起见,想象每个“Item”的“Values”数组的长度是相同的。 让我们收集这些“项目”:
例A:
List<Item> items = new List<Items>(
new Item() { Key = "A", Values = new String[]{"OneA", null, "ThreeA"}},
new Item() { Key = "B", Values = new String[]{"OneB", "TwoB", null}},
new Item() { Key = "C", Values = new String[]{null, null, "ThreeC"}}
);
例B:
List<Item> items = new List<Items>(
new Item() { Key = "1", Values = new String[]{"One1", null}},
new Item() { Key = "2", Values = new String[]{"One2", "Two2"}},
new Item() { Key = "3", Values = new String[]{null, null}}
);
那么在下一种情况下如何从ToolKit中创建一个DataGrid
,其中包含以下columsn:
例A:
A | OneA | ____ | ThreeA |
B | OneB | TwoB | ______ |
C | ____ | ____ | ThreeC |
例B:
1 | OneA | ____ |
2 | OneB | TwoB |
3 | ____ | ____ |
因此,在单词中:在不同情况下,Values数组具有不同的长度。但是对于一种情况,所有Values数组都具有相同的长度(为了简化)。
如果DataGridInstance.ItemsSource
绑定到项目(NotifyPropertyChanged
已实现),那么如何设置列以及如何设置列值的绑定?
当然,每次刷新DataGridInstance.Columns.Clear()
都是如此。
比再次添加列,它们的数量是众所周知的(当然取决于“值”数组的长度)。
但是我如何创建值的绑定?
我希望得到以下内容:
Binding columnABinding = new Binding("Values[0]");
Binding columnBBinding = new Binding("Values[1]");
Binding columnCBinding = new Binding("Values[3]");
呃,抱歉我的英语不好。我试着保持简单,希望这是可以理解的!
提前感谢您的回答!
答案 0 :(得分:0)
最近有一个similar question被问到,根据我在那里的回答,我怀疑你可以绑定列本身。要刷新列,您可以订阅其中一个项的PropertyChanged
事件,如果更改了数组的长度,则可以重建列。如果DataContext发生更改并且新项目以这种方式提交,您可能还需要处理要刷新的DataContextChanged
事件。