2011-07-11 41 views
0

我有一個名爲類WPF的ItemSource返回null

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; 

這顯示正是我想要的數據網格。

現在我想要得到的DataGrid的數據備份和重複throught它

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

..但「牛逼」爲空! !這就是問題 !!

這是數據網格的定義:

<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

請使用正確的代碼格式,其難以閱讀您的文章。 – dowhilefor

回答

1

的的ItemsSource不爲空,它只是ArrayList沒有實現IEnumerable<testClass>,因此中投執行的回報null。如果您使用

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

您將收到一條錯誤消息,表明此演員表無效。

如果您使用List<testClass>而不是ArrayList作爲源,則強制轉換將有效且不返回空值。

如果您不希望使用通用集合,那麼將其轉換爲ArrayListIEnumerable (non-generic)而不是如果您希望有一個接口。

+0

感謝您的解釋,這讓我把它說得對。解決了。 – ninety