Thứ Hai, 13 tháng 7, 2009

WPF Data Binding: Không sử dụng Binding (P6)

Hầu hết các ứng dụng ngày nay đều phải đáp ứng 4 thao tác với giữ liệu CRUD (Create, Read, Update, Delete). Do đó nhiệm vụ của người lập trình là phải viết code để xử lý giữ liệu. Đó là việc lấy giữ liệu từ nhiều nguồn khác nhau như, XML, SQL,…rồi thể hiện chúng trên các form hoặc các view. Trong quá trình đó chúng ta phải thực hiện khá nhiều thao tác như: chuyển đổi, tính toán, sắp xếp, lọc…điều đó tương ứng sẽ mất rất nhiều line of code. Với WPF Data Binding Engine, sẽ cung cấp cho lập trình viên nhiều tính năng sẵn có giúp giảm thiểu khá nhiều dòng code phải viết

Chúng ta sẽ xem xét một ứng dụng không sử dụng data binding

1. Thiết kế một WPF form như sau:

  A21319952F68E79E_400_0[1]

2. Thêm mới một Person.cs để define data

public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName { get; set; }
 
        public Person(string firstName, string lastName)
        {
            FirstName = firstName;
            LastName = lastName;
            FullName = firstName + " " + lastName;
        }
    }




3. Chúng ta sẽ display data từ person object lên Form như sau:






public partial class Window1 : Window
    {
        //Khởi tạo đối tượng Person
        Person person = new Person("Quang", "Nguyen");
        public Window1()
        {
            InitializeComponent();       
 
            //Display lên form controls
            this.txtFirstName.Text = person.FirstName;
            this.txtLastName.Text = person.LastName;
            this.tblFullName.Text = person.FullName;
        }
 
        private void btnDisplay_Click(object sender, RoutedEventArgs e)
        {
            //Ghi nhận lại Full name
            person.FullName = person.FirstName + " " + this.txtMiddleName.Text + " " + person.LastName;
            //Show message box khi click vào button
            MessageBox.Show("Hello " + person.FullName);
        }
    }




4. Kết quả



A21319952F68E79E_400_1[1]





Chúng ta sẽ thấy:



Form xuất hiện: First Name, Last Name và Your name được tự động fill từ 2 textbox trên.



Chúng ta thêm Middle Name và submit button. Khi đó person object sẽ thay đổi FullName và display giá trị này trên MessageBox. Tuy nhiên trên Form, Your Name không được thay đổi.



Vậy làm sao để Main UI được cập nhật khi có thay đổi đối với Object. Chúng ta sẽ sửa đổi như sau:



thêm đoạn code sau trong Event Submit





//Binding lại controls
this.tblFullName.Text = person.FullName;






private void btnDisplay_Click(object sender, RoutedEventArgs e)
        {
            //Ghi nhận lại Full name
            person.FullName = person.FirstName + " " + this.txtMiddleName.Text + " " + person.LastName;
 
            //Binding lại controls
            this.tblFullName.Text = person.FullName;
 
            //Show message box khi click vào button
            MessageBox.Show("Hello " + person.FullName);
        }










Mặc dù chúng ta chỉ phải thêm 1 dòng code, nhưng điều gì sẽ xảy ra nếu có nhiều thay đổi? Chắc chắn chúng ta phải binding lại rất nhiều

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

Đăng nhận xét