首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF ItemSource返回null

WPF ItemSource返回null
EN

Stack Overflow用户
提问于 2011-07-11 09:26:42
回答 1查看 1.2K关注 0票数 0

我有个指定的班

代码语言:javascript
复制
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数据集。

代码语言:javascript
复制
ArrayList l = new ArrayList();
l.Add(new testClass("ose11", "7016463"));
this.grdTestData.ItemsSource = l;

这正好显示了我想要的数据。

现在我想要拿回数据集的数据,然后迭代它

代码语言:javascript
复制
IEnumerable<testClass> t = this.grdTestData.ItemsSource as IEnumerable<testClass>;

..but 't‘是空的!这就是问题所在!

这是一个数据化定义:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-11 09:45:34

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

代码语言:javascript
复制
var list = (IEnumerable<testClass>) datagrid.ItemsSource;

您将收到一个错误,说明此强制转换无效。

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

如果不希望使用泛型集合,则将其转换为ArrayListIEnumerable (non-generic),如果希望有接口的话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6648144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档