DataGrid列绑定到List的项目

时间:2015-04-24 15:39:53

标签: c# wpf

DataGrid的ItemsSource是List<myClass>myClassList<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>();
}

3 个答案:

答案 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的列的网格

希望它清除,如果您需要更多信息,请告诉我。