WPF ItemSsource返回null

时间:2011-07-11 09:26:42

标签: wpf datagrid ienumerable itemsource

我有一个命名类

public class testClass
{
    public testClass(string showCode, string urn)
    {
        ShowCode = showCode;
        URN = urn;
    }

    public string ShowCode { get; set; }
    public string URN { get; set; }
}

我创建一个ArrayList,添加到列表并将其绑定到wpf datagrid

ArrayList l = new ArrayList();
l.Add(new testClass("ose11", "7016463"));
this.grdTestData.ItemsSource = l;

这显示了我想要的数据网格。

现在我想要获取datagrid的数据并迭代它

IEnumerable<testClass> t = this.grdTestData.ItemsSource as IEnumerable<testClass>;

..但' t '为空! !这是问题!!

这是数据网格定义:

<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="12,66,0,48" Name="grdTestData" Width="200" CanUserAddRows="True" >
    <DataGrid.Columns>
        <DataGridTextColumn Header="ShowCode" Binding="{Binding ShowCode}" />
        <DataGridTextColumn Header="URN"  Binding="{Binding Path=URN}" />
    </DataGrid.Columns>
</DataGrid>

1 个答案:

答案 0 :(得分:1)

ItemsSource不为null,只是ArrayList没有实现IEnumerable<testClass>,因此您执行的强制转换返回null。如果你使用

var list = (IEnumerable<testClass>) datagrid.ItemsSource;

您将收到错误消息,说明此广播无效。

如果您使用List<testClass>而不是ArrayList作为源代码,则转换将有效且不会返回null。

如果您不想使用通用集合,请将其转换为ArrayListIEnumerable (non-generic),如果您希望拥有界面。