0

我有一个命名类

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 数据网格

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

这显示了我在数据网格中想要的内容。

现在我想取回数据网格的数据并遍历它

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>
4

1 回答 1

1

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

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

您将收到一条错误消息,指出此演员表无效。

如果您使用 aList<testClass>而不是ArrayList源,则强制转换将有效且不返回 null。

如果您不希望使用泛型集合,请将其强制转换为,ArrayList或者IEnumerable (non-generic) ,如果您希望有一个接口。

于 2011-07-11T09:45:34.757 回答