我有个指定的班
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>;..but '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>发布于 2011-07-11 09:45:34
ItemsSource不是空的,只是ArrayList没有实现IEnumerable<testClass>,因此您执行的强制转换返回null。如果您使用
var list = (IEnumerable<testClass>) datagrid.ItemsSource;您将收到一个错误,说明此强制转换无效。
如果对源使用List<testClass>而不是ArrayList,则强制转换将是有效的,并且不返回null。
如果不希望使用泛型集合,则将其转换为ArrayList或IEnumerable (non-generic),如果希望有接口的话。
https://stackoverflow.com/questions/6648144
复制相似问题