1. 程式人生 > >黑馬程式設計師 WPF中DataGrid的ItemsSource屬性的賦值和取值的差異

黑馬程式設計師 WPF中DataGrid的ItemsSource屬性的賦值和取值的差異

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物件陣列,所以取grid1ItemsSource的時候,也須定義一個數組來取,如下:

Book[] newBooks=(Book[])grid1.ItemsSource;


如果設定資料來源和取資料來源的型別不一致,執行時會發生錯誤!

List<Book> list = (List<Book>)grid1.ItemsSource;

報錯:未處理InvalidCastException,無法型別轉換

 

結論:DataGrid控制元件的ItemsSource屬性,設定和取值須是相同的資料型別。