黑馬程式設計師 WPF中DataGrid的ItemsSource屬性的賦值和取值的差異
阿新 • • 發佈:2019-01-23
XMAL程式碼:
<DataGrid x:Name=grid1 AutoGenerateColumns="True"></DataGrid>
定義一個類Book:
public class Book { public int Id { get; set; } public string ISBN { get; set; } public string Name { get; set; } public string Author { get; set; } public Book(int _id, string _isbn, string _name, string _author) { Id = _id; ISBN = _isbn; Name = _name; Author = _author; } }
//定義Book陣列,存放兩個Book物件
Book[] books=new Book[2];
books[0] = new Book(1, "book001", "葵花寶典", "東方不敗");
books[1] = new Book(2, "book002", "九陽真經", "達摩老祖");
//給grid1賦予資料來源
grid1.ItemsSource = books;
這裡grid1的資料來源是Book物件陣列,所以取grid1的ItemsSource的時候,也須定義一個數組來取,如下:
Book[] newBooks=(Book[])grid1.ItemsSource;
如果設定資料來源和取資料來源的型別不一致,執行時會發生錯誤!
如
List<Book> list = (List<Book>)grid1.ItemsSource;
報錯:未處理InvalidCastException,無法型別轉換
結論:DataGrid控制元件的ItemsSource屬性,設定和取值須是相同的資料型別。