DataGrid的ItemsSource是List<myClass>
,myClass
有List<int>
属性。
现在我想将List<int>
的第一项绑定到DataGrid的第一列,将第二项绑定到第二列。
怎么做?
XMAL:
<DataGrid.Columns>
<DataGridTextColumn Header="MyClass Name" Binding="{Binding Name}" ></DataGridTextColumn>
<DataGridTextColumn Header="First Item of Numbers" Binding="{Binding ??}" ></DataGridTextColumn>
<DataGridTextColumn Header="Second Item of Numbers" Binding="{Binding ??}" ></DataGridTextColumn>
</DataGrid.Columns>
C#:
class MyClass
{
public string Name{ get; set; }
public List<int> Numbers= new List<int>();
}
答案 0 :(得分:4)
您可以指定集合的索引。
示例:
Text = "{Binding MyClasses[0]}"
Text = "{Binding MyClasses[1]}"
答案 1 :(得分:1)
如果您希望在datagrid中转置行和列,可以参考以下几个答案和资源。
它不是很直接。
答案 2 :(得分:0)
对于这样的要求,我建议你的是 -
我们的要求是拥有一个Collection,其中包含属性来自列表的项目。
为此你可以使用Micosoft Dynamics
..有一个ExpandoObject,在List中的expando对象中创建属性,并在那里设置所需的单元格值。
例如,您的列表是{1,2,3,4}
我们希望结果网格
| 1 | 2 | 3 | 4 |
| value1 | Value2 | Value3 | Value4 |
var listOfInt = new List<int>{1,2,3,4};
var exPo = new ExpandoObject();
var listOfExPo = new List<ExpandoObject>();
var expoDict = (IDictionary<string,object>) exPo;
foreach (var i in listOfInt)
{
expoDict.Add(i.ToString(), "value" + i);
}
listOfExPo.Add(exPo);
现在,当您将网格绑定到ListOfExpo时,您将拥有一个包含来自ListOfInt的列的网格
希望它清除,如果您需要更多信息,请告诉我。