我有一个命名类
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>
答案 0 :(得分:1)
ItemsSource不为null,只是ArrayList
没有实现IEnumerable<testClass>
,因此您执行的强制转换返回null
。如果你使用
var list = (IEnumerable<testClass>) datagrid.ItemsSource;
您将收到错误消息,说明此广播无效。
如果您使用List<testClass>
而不是ArrayList
作为源代码,则转换将有效且不会返回null。
如果您不想使用通用集合,请将其转换为ArrayList
或IEnumerable (non-generic)
,如果您希望拥有界面。