Tuesday, 20 May 2014 09:05

Cơ chế Data Binding trong ứng dụng Window Phone 8

Written by 
Rate this item
(1 Vote)

Data binding (liên kết dữ liệu) là một trong những cách đơn giản để ứng dụng của bạn hiển thị và tương tác với dữ liệu. Việc tách riêng phần giao diện (UI) và dữ liệu (data) sẽ mang lại sự thuận tiện khi thiết kế giao diện cũng như là khi viết mã quản lý dữ liệu. Khi có một kết nối (connection) giữa phần giao diện với phần dữ liệu thì những thay đổi từ một phía sẽ được cập nhật ở phía còn lại.

Giới thiệu

Window Phone 8 dùng xaml để xây dựng giao diện .

Ngôn ngữ xaml hỗ trợ binding khá mạnh mẽ .Những ai đã từng lập trình trong wpf thì sẽ thấy được sức mạnh về lập trình giao diện binding với xaml

- Việc dùng binding xử lý giao diện giúp tách bạch giữa xử lý logic và xử lý giao diện.Rất nhiều giao diện phức tạp ta có thể chỉ phải code xaml mà rất ít phải dùng tới ngôn ngữ .net ( c# , vb.net )

- Data binding được sử dụng ở trong rất nhiều trường hợp: khi bạn muốn hiển thị danh sách các bài hát với ListBox (hoặc LongListSelector), hiển thị tên người dùng với TextBlock, hiển thị ảnh với Image v.v.

Các khái niệm về Binding

- Có 2 kỹ thuật binding cơ bản đó là : Binding giữa các Control và Binding giao diện với nguồn dữ liệu

- Ta xem xét các thuộc tính binding thông qua hình ảnh sau :

OneTime Data Binding

- Đây là cơ chế binding cập nhật nguồn dữ liệu chỉ có 1 thời gian nhất định cho 1 lần .Giả sử dữ liệu hiển thị chỉ được binding lần đầu tiên khi load ứng dụng chẳng hạn .

<TextBlock Text="{Binding ID, Mode=OneTime}" />

OneWay Data Binding

- Đây là cơ chế Binding 1 chiều từ dữ liệu nguồn sang View. Giả sử giao diện chúng ta binding thông tin với 1 nguồn thông tin tiếp đó khi thông tin thay đổi thì chúng không tự động cập nhật trở lại giao diện

<TextBlock Text="{Binding ID, Mode=OneWay}" />

<TextBox Text="{Binding Name, Mode=OneWay}" />

Đây là giá trị mặc định khi biding của 1 Control , nếu như ta không khai báo các kiểu binding cụ thể khác

TwoWay Data Binding

Đây là cơ chế Binding 2 chiều giữa View và nguồn dữ liệu.Ngược lại cơ chế One way khi dữ liệu thay đổi thì giao diện sẽ tự động thay đổi theo

<TextBox Text="{Binding Name, Mode=TwoWay}" />

Ngoài ra chúng ta còn cần quan tâm tới một vài thuộc tính binding khác nữa đó là :

ElementName :Binding với Control khác.Tức là thuộc tính biding sẽ lấy giá trị từ thuộc tính nào đó của Control nào khác.Di nhiên là phải cùng kiểu giá trị .Nếu không thì chúng ta cần tạo ra cơ chế Converter cụ thể

UpdateSourceTrigger :

Khi binding 2 chiều ta còn quan tâm tới khi nào dữ liệu được cập nhật trên giao diện và giao diện cập nhật trở lại nguồn .Khi đó ta quan tâm tới thuộc tính UpdateSourceTrigger :Thời gian thực hiện việc cập nhật binding .Có các giá trị là :PropertyChanged : cập nhật ngay khi thuộc tính thay đổi

Converter : Convert giữa dữ liệu nguồn và dữ liệu đích.

- Khi binding đôi khi ta không binding hiển thị trực tiếp mà binding các kiểu dữ liệu khác nhau : Giả sử với kiểu dữ liệu bool (True , false) ta sẽ hiển thị là Nam , hay nữ thì khi này ta sẽ cần tạo các lớp Converter định nghĩa cơ chế binding

- Xaml cũng cung cấp sẵn 1 số Converter như các thuộc tính Show , hide của Control có thể binding với kiểu dữ liệu bool

Bài viết đưa ra những vấn đề khá quan trọng của binding. Và Binding được coi là nền tảng mạnh mẽ của xaml .

Nếu lập trình xaml xử lý giao diện mà không dùng binding thì quả thật rất đáng lãng phí .

Giả sử ta có thể thiết lập nên các bảng biểu như Excel , khi nhập số liệu trên nhiều ô thì các ô giá trị có thể tự động cập nhật hoặc lưu xuống csdl thông qua binding 

Read 3577 times