2008-08-11 37 views
11

Bất cứ ai có thể chỉ cho tôi một nguồn lực tốt (hoặc ném cho tôi một đầu mối) để cho tôi thấy làm thế nào để làm DataBinding để điều khiển (ComboBox, ListBox, vv) trong WPF? Tôi đang ở một chút mất mát khi tất cả các ưu điểm WinForms của tôi được lấy đi từ tôi, và tôi không phải là tất cả những gì sáng để bắt đầu với ...WPF Databinding

Trả lời

3

Tôi tìm thấy video hướng dẫn tại Windows Client .Net bằng nhau tuyệt vời. Dot Net Rocks TV cũng đã bao gồm nó một thời gian trước đây.

+0

các liên kết này dường như bị vô nghĩa ngay bây giờ (liên kết Windows Client .NET thậm chí không phân giải trên DNS nữa) – Ortund

5

Tài nguyên tốt nhất mà tôi đã tìm thấy để gắn kết dữ liệu WPF là Bea Costa's blog. Bắt đầu từ bài đăng đầu tiên và đọc tiếp. Thật tuyệt vời.

3

ở mã phía sau - đặt hộp DataContext của hộp danh sách bằng bộ sưu tập bạn đang ràng buộc.

private void OnInit(object sender, EventArgs e) 
{ 
    //myDataSet is some IEnumerable 

    // myListBox is a ListBox control. 
    // Set the DataContext of the ListBox to myDataSet 
    myListBox.DataContext = myDataSet; 
} 

Trong XAML, Listbox có thể tuyên bố mà tính nó liên kết với cách sử dụng "Ràng buộc" cú pháp.

<ListBox Name="myListBox" Height="200" 
    ItemsSource="{Binding Path=BookTable}" 
    ItemTemplate ="{StaticResource BookItemTemplate}"/> 
3

Và một số liên kết hơn, chỉ trong trường hợp nêu trên không đủ:

Windows Presentation Foundation - Data Binding How-to Topics
- Xấp xỉ 30 'Làm thế nào để' bài viết từ MSDN.
"Các chủ đề trong phần này mô tả làm thế nào để sử dụng dữ liệu ràng buộc để ràng buộc các yếu tố để dữ liệu từ nhiều nguồn dữ liệu trong các hình thức phổ biến thời gian chạy ngôn ngữ (CLR) các đối tượng và XML."

Moving Toward WPF Data Binding One Step at a Time
- Bằng WPF guru Josh Smith
"Bài viết này giải thích các khái niệm cơ bản tuyệt đối về ràng buộc dữ liệu WPF. Nó hiển thị bốn cách khác nhau để thực hiện cùng một tác vụ đơn giản. Mỗi lần lặp lại gần hơn với việc thực hiện XAML nhỏ gọn nhất có thể. không có kinh nghiệm về ràng buộc dữ liệu WPF. "

2

Có ba điều bạn cần làm:

  1. Bind ItemsSource của ComboBox vào danh sách các tùy chọn.
  2. Liên kết SelectedItem với thuộc tính chứa lựa chọn.
  3. Đặt ComboBox.ItemTemplate thành DataTemplate cho ComboBoxItem.

Vì vậy, ví dụ, nếu đối tượng bối cảnh dữ liệu của bạn là một người có địa chỉ email, và bạn muốn chọn chính của họ, bạn có thể có các lớp học với những chữ ký:

public class EmailAddress 
{ 
    public string AddressAsString { get; set; } 
} 

public class Person 
{ 
    public IEnumerable<EmailAddress> EmailAddresses { get; } 
    public EmailAddress MainEmailAddress { get; set; } 
} 

Sau đó, bạn có thể tạo ra hộp kết hợp như sau:

<ComboBox ItemsSource="{Binding EmailAddresses}" SelectedItem="{Binding MainEmailAddress}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <ComboBoxItem Content="{Binding AddressAsString}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

Bây giờ bạn cần triển khai INotifyPropertyChanged trong cả Người và EmailAddress. Đối với bộ sưu tập EmailAddresses, bạn có thể quay lại với ObjservableCollection.

Hoặc thay thế, bạn có thể sử dụng Update Controls .NET. Đây là một dự án nguồn mở thay thế ràng buộc dữ liệu và không yêu cầu INotifyPropertyChanged.Bạn có thể sử dụng bất kỳ bộ sưu tập nào có ý nghĩa để trả lại thuộc tính EmailAddresses. XAML hoạt động giống như trên, ngoại trừ việc bạn nhập không gian tên UpdateControls.XAML và thay thế {Binding ...} bằng {u: Update ...}.

Các vấn đề liên quan