Thứ Năm, 5 tháng 2, 2009

WPF Ràng Buộc Dữ Liệu Với Entity Framework

Trong hướng dẫn này, bạn sẽ tạo ra một Windows đơn giản trình bày mẫu mà dùng LINQ to Entities truy vấn đối với một khung Entity Entity liệu Mẫu là nguồn cho điều khiển.

Các trang sẽ có một danh sách thả xuống của khách hàng. Khi một khách hàng được chọn, địa chỉ chính thông tin của khách hàng sẽ được hiển thị.

Tạo một ứng dụng WPF mới và thêm một thực thể dữ liệu Mẫu
  • Thêm một thực thể dữ liệu Mẫu cho các cơ sở dữ liệu AdventureWorksLT cho dự án.
Thêm điều khiển để cửa sổ mặc định
  • Nhấp vào tab cho Window1.XAML tại các cửa sổ tài liệu để xem cửa sổ mặc định sản phẩm nào.
  • Từ hộp công cụ, chọn một điều khiển Label.

  • Nhấp vào trong cửa sổ thiết kế để đặt sự kiểm soát nhãn trên bề mặt thiết kế. Kéo điều khiển đến vị trí mong muốn.

  • Trong cửa sổ tiết cho các điều khiển Label, thay đổi sở hữu nội dung từ "Label" đến "Phiêu Works Khách hàng"
  • Nếu cần, hãy nhấp vào kiểm soát nhãn trên bề mặt thiết kế, sau đó đưa chuột chuột qua biên giới bên phải của nhãn. Nhấp và kéo biên giới quyền chiều rộng mong muốn.

  • Trong hộp công cụ, nhấn vào điều khiển ListBox, sau đó bấm vào trong khu vực thiết kế cửa sổ để thêm một ListBox với bề mặt thiết kế.

  • Sử dụng phương pháp tương tự như bạn đã làm với nhãn, thay đổi kích cỡ của ListBox để đặt lại vị trí và làm cho nó rộng hơn.
  • Thêm ba nhãn hơn vào cửa sổ và trong cửa sổ tiết, thay đổi sở hữu nội dung của họ để "Primary Address", "City" và "Country"

  • Thêm ba nhãn nhiều hơn và trong cửa sổ tiết, thay đổi tài sản dày biên giới của họ để 1 và BorderBrush to Black. Các tài sản BorderBrush là thay đổi cách sử dụng một danh sách thả xuống.
Lưu ý: Nếu bạn chọn cả ba nhãn trong thiết kế bằng cách sử dụng Ctrl + Click vào, nó có thể thay đổi các thuộc tính cho cả ba cùng một lúc.


Truy vấn awModel để cung cấp dữ liệu cho các ràng buộc
  • Rê chuột đến bên ngoài của các cửa sổ và nhấp đúp để Visual Studio sẽ tự động tạo ra các sự kiện Window_Loaded cho cửa sổ.

VB Result:


C# Result :

  • Trong sự kiện Window_Loaded, sao chép đoạn mã sau đó sẽ thực hiện một truy vấn LINQ to Entities mà khoan thông qua các thực thể khách hàng để tìm các thực thể Địa chỉ thuộc CustomerAddress đầu tiên trong bộ sưu tập CustomerAddresses của khách hàng. Kết quả sẽ được sử dụng như là nguồn gốc cho Tìm ListBox.
  VB
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) _
Handles Me.Loaded

Dim aw = New awEntities
Dim fullGraph = From cust In aw.Customers.Include("CustomerAddresses.Address") _
From CustomerAddress In cust.CustomerAddresses.Take(1) _
Select cust, CustomerAddress
Dim query = From cGraph In fullGraph _
Select cGraph.cust.CustomerID, _
cGraph.cust.CompanyName, cGraph.CustomerAddress.AddressType, _
cGraph.CustomerAddress.Address.City, cGraph.CustomerAddress.Address.CountryRegion
Me.ListBox1.ItemsSource = query
End Sub

C#
private void Window_Loaded(object sender, RoutedEventArgs e)
{

awEntities aw=new awEntities();
var fullGraph = from cust in aw.Customers.Include("CustomerAddresses.Address")
from CustomerAddress in cust.CustomerAddresses.Take(1)
select new { cust, CustomerAddress };
var query = from cGraph in fullGraph
select new
{
cGraph.cust.CustomerID,
cGraph.cust.CompanyName,
cGraph.CustomerAddress.AddressType,
cGraph.CustomerAddress.Address.City,
cGraph.CustomerAddress.Address.CountryRegion
};
listBox1.ItemsSource = query;
}
 
Thêm DataTemplates và bindings vào XAML để hiển thị các dữ liệu bị ràng buộc
  • Mở Window1 thiết kế tại các cửa sổ tài liệu.
  • Nếu cần thiết, thay đổi giao diện để ngăn Split để xem Designer và XAML đồng thời. Bạn có thể làm điều này với các biểu tượng cửa sổ ở dưới cùng của cửa sổ thiết kế.


  • Nhấp vào ListView trong thiết kế. Các mã XAML cho điều khiển sẽ được nêu bật.
  • Thêm các tham số sau vào ListBox
ItemsSource = "(Binding)"
Kết quả:


  • Xóa đóng dấu gạch chéo ("/") cuối của ListBox.
  • Thêm mã sau dưới đây là yếu tố ListBox.
   
      
          
      
   



Kết quả:

    
        
              
        
    

  • Trong thiết kế, nhấp vào đầu tiên trong ba nhãn giáp. Các mã XAML cho nhãn sẽ được tô đậm.
  • Xác định vị trí của chuỗi nội dung mặc định "Label" trong mã XAML.

Nếu của Label XAML không phải là gói, bạn sẽ cần phải di chuyển sang phải để xác định vị trí đó.
  • Thay thế nội dung với mã sau đây


Kết quả:

Không có nhận xét nào:

Đăng nhận xét