1

我在尝试将 DataGrid 绑定到列表或字典时遇到问题。如果我将 DataContext 设置为一个对象,并将 ItemSource 设置为该对象的 List 属性,我会使用 List 计数填充 DataGrid,如果是 List,为什么?如何正确绑定到列表,以及如何绑定到字典?

List<string> con = new List<string>();
        con.Add("aaaddd");
        con.Add("bbb");
        this.DataContext = con;

<DataGrid AutoGenerateColumns="True" Height="104" HorizontalAlignment="Left"          Margin="34,171,0,0" Name="dg" VerticalAlignment="Top" Width="421" ItemsSource="{Binding}"/>

我得到了填充

长度 6 3

为什么?以及如何绑定到字典?

4

2 回答 2

1

正如评论中所说,我认为您指的是 WPF 的DataGrid控件。
如果您将列表对象设置为,DataContext那么ItemsSource="{Binding}"这将绑定到DataContext您的列表对象的根。

于 2013-11-02T00:28:09.210 回答
1

问题是您已在 dataGrid 上设置AutoGenerateColumns为。True

当 AutoGenerateColumns 设置为 true 时,列是根据基础对象公开的属性自动生成的,在您的情况下是字符串,它只公开单个属性,即Length

如果您想获取字符串的值,您需要将该属性设置为 false 并提供您自己的列集合。这将起作用 -

    <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Value"
                                IsReadOnly="True"
                                Binding="{Binding}"/>
        </DataGrid.Columns>
    </DataGrid>
于 2013-11-02T13:13:12.120 回答