basquang™ on clouds

July 13, 2009

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

Filed under: WPF — basquang @ 8:10 AM

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:

  image

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ả

image

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.

Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: