Archive for the ‘ WPF ’ Category

Data Binding

Giới thiệu

Data Binding (liên kết dữ liệu), có thể nói nôm na là phương pháp rút trích dữ liệu từ trong database và hiển thị chúng ra giao diện bên ngoài mà không cần phải viết những dòng code chán ngắt hoặc chỉ cần viết rất ít. Do data là linh hồn của một ứng dụng, nên từ xưa data binding đã được xem là một trong những vấn đề quan trọng hàng đầu cần phải giải quyết để tăng hiệu năng của việc lập trình và hiệu quả của chương trình.

Những developer đã từng trải qua thời kỳ làm việc với Windows Forms sẽ nhận thấy rằng data binding trong WPF không có quá nhiều điểm khác biệt. Cũng như Windows Forms, WPF cho phép tạo liên kết giữa các thuộc tính của đối tượng dữ liệu với các thuộc tính của thành phần giao diện. WPF cũng cung cấp các control dạng list, có thể được bind từ một mảng, hay một danh sách đối tượng; list control này có khả năng hiển thị toàn bộ thông tin theo từng trang (paging) hoặc xem chi tiết theo từng record một, cho phép người dùng có thể duyệt để tìm kiếm thông tin mà họ mong muốn.
Read more

Animation

WPF là một framework mới với nhiều khả năng tiên tiến, đặc biệt là hỗ trợ rất mạnh về đồ họa và giao diện người dùng. Ta có thể xem một số hình ảnh tạo bỏi WPF dùng trên ngôn ngữ C# như sau:

Animation là một trong số đó, không những thế, nó còn là hạt nhân, là điểm nhấn của WPF. Với cách tiếp cận hoàn toàn khác so với Window Form truyền thống là dựa trên định thời, hiệu ứng trong WPF chủ yếu dựa trên thuộc tính. Ta có thể xoay, kéo dãn ra, di chuyển dọc theo màn hình, đổi màu, v..v mọi đối tượng, tùy theo cách thức tác động lên thuộc tính tương ứng. Để có thể phát huy hết sức mạnh của animation trong WPF, những kiến thức về thuộc tính độc lập (depedency property), style, transformation…. là cần thiết.
Read more

Transformation

Transformation là khái niệm dùng để chỉ các phép biến đổi một hình ảnh này thành một hình ảnh khác, bên dưới thực chất nó là sự biến đổi hệ tọa độ, đưa hình ảnh từ hệ tọa độ này sang hệ tọa độ khác để hình này nhìn có vẻ khác đi. Bằng phương pháp toán học, người ta thực hiện phép chuyển đổi tọa độ bằng việc sử dụng ma trận. Mỗi phép chuyển đổi tọa độ – mỗi loại transformation như scaling (phóng to, thu nhỏ), reflection (tạo ảnh đối xứng), translation (dịch chuyển) và rotation (xoay) – đều có một ma trận đặc trưng cho nó. Bài viết sẽ giới thiệu các kiến thức toán học cơ bản về vector, ma trận và transform trong không gian 2D, đồng thời cũng giới thiệu về các công cụ mà WPF cung cấp để thao tác với các đối tượng toán học để tạo nên hiệu ứng 2D transformation cho UI control. WPF vẫn hỗ trợ transformation trong không gian 3D, nhưng sẽ không được đề cập đến vì khối lượng lý thuyết toán 3D khổng lồ khó có thể được trình bày trong một bài tìm hiểu ngắn.
Read more

Style

Một Style là một tập hợp các giá trị thuộc tính có thể áp vào một đối tượng đồ hoạ. Style trong WPF đóng vai trò tương tự như CSS trong HTML. Giống như CSS, WPF Style cho phép định nghĩa một tập hợp những định dạng chung để áp dụng trong toàn bộ chương trình để bảo đảm tính nhất quán. WPF Style hoạt động một cách tự động, áp dụng lên kiểu dữ liệu mục tiêu (target type), và có thể áp dụng nối tiếp xuống cây cấu trúc các đối tượng đồ hoạ. Tuy nhiên, WPF Style còn mạnh mẽ hơn CSS khi nó có thể đặt giá trị của bất kì thuộc tính phụ thuộc (dependency property) nào, ví dụ như trạng thái của control. WPF hỗ trợ cả triggers, dùng để thay đổi các thuộc tính của control khi mà một thuộc tính nào đó thay đổi, và hỗ trợ templates để định dạng lại cấu trúc bên dưới của control. Style là một điểm mạnh mà ta có thể mạnh dạn áp dụng trong chương trình.
Read more

Resource

Trong WPF có hai đối tượng dữ liệu đều được gọi dưới tên là resource:

  • Assembly resource là một dãy dữ liệu nhị phân được đính kèm vào trong assembly đã được biên dịch sẵn, ví dụ như .NET exe, dll. Người ta sử dụng assembly resource trong trường hợp muốn bảo đảm rằng hình ảnh và âm thanh được sử dụng trong chương trình luôn ở tư thế sẵn sàng khi muốn truy cập.
  • Object resource là những đối tượng .NET mà developer định nghĩa tại một vị trí nào đó trong chương trình để sử dụng chúng tại nhiều vị trí khác nhau. Object resource ít khi được tạo ra bằng code, mà chủ yếu được viết thông qua XAML markup. Kiểu resource này hỗ trợ cho việc tái sử dụng các đối tượng đồ họa và cho phép lưu trữ các thông tin (ví dụ như color scheme của ứng dụng) tại vị trí tập trung để việc tìm kiếm và chỉnh sửa được thuận tiện. Object resource đa số được sử dụng kết hợp với WPF style để tạo giao diện thống nhất trong chương trình.

Read more

Dependency Property & Routed Event

Dependency Property

Khi ta bắt đầu với việc phát triển ứng dụng với WPF, ta sẽ gặp phải các thuộc tính phụ thuộc. Chúng trông tương tự như những thuộc tính .Net thông thường, nhưng khái niệm đằng sau thì phức tạp hơn và mạnh hơn.

Những thuận lợi của các thuộc tính phụ thuộc:

  • Giảm không gian lưu trữ. Một sự lãng phí lớn để lưu trữ cả một vùng cho mỗi thuộc tính khi hơn 90% các thuộc tính của một điều khiển giao diện người dùng đều duy trì ở các giá trị khởi tạo. Thuộc tính phụ thuộc giải quyết vấn đề này bằng cách chỉ lưu trữ thuộc tính bị thay đổi trong thực thể. Giá trị mặc định được lưu trữ chỉ một lần trong thuộc tính phụ thuộc.
  • Kế thừa giá trị. Khi ta truy cập một thuộc tính phụ thuộc, giá trị được phân giải dựa trên một thứ tự phân giải giá trị. Nếu không có giá trị cục bộ nào được thiết lập, giá trị phụ thuộc sẽ đi lên cây luận lý cho tới khi tìm được một giá trị. Ví dụ, khi ta thiết lập giá trị FontSize trên thành phần gốc, nó sẽ áp dụng cho mọi textblock ở sau ngoại trừ ta ghi đè giá trị đó.
  • Báo hiệu sự thay đổi. Thuộc tính phụ thuộc có cơ chế tích hợp nhận dạng sự thay đổi. Bằng cách đăng ký một callback trong metadata của thuộc tính, ta sẽ được lưu ý khi giá trị của thuộc tính được thay đổi. Kỹ thuật này cũng được sử dụng bởi data binding.

Read more

Layout

Giới thiệu

a. Ở các phiên bản .NET 1.x, Windows Form cung cấp một hệ thống layout gốc với các controls được đặt cố định theo tọa độ, điều này gây khó khăn trong việc sử dụng các nội dung động. Phiên bản .NET 2.0 đã điền vào chỗ khuyết này với 2 layout container là: FlowLayoutPanel và TableLayoutPanel cho phép thao tác dễ dàng hơn với các nội dung động, tạo các modules interface và định vị ứng dụng. Tuy nhiên, các layout panel này chỉ giống như một add-on cho hệ thống layout của Windows Form – vốn dĩ là đặt cố định theo tọa độ (coordinate-based layout)

Layout trong WPF thì ngược lại so với mô hình trong .NET 2.0. Ở .NET 2.0 là layout cố định theo tọa độ – tùy chọn thêm flow-based layout panels; còn trong WPF thì flow-based layout là chuẩn, trong khi layout cố định theo tọa độ chỉ được hỗ trợ ở mức sơ đẳng.

WPF sử dụng các dạng panel khác nhau để bố trí các phần tử đồ họa trên giao diện người dùng. Điều này kế thừa từ ý tưởng trong .NET 2.0, kết hợp công nghệ giao diện mạnh như Windows Forms, với layout của trình duyệt, tạo interface như web, nhằm nâng cao tính linh hoạt trong việc bố trí các phần tử trên giao diện.
Read more

WPF/E

WPF Everywhere (WPF/E) là codename của một công nghệ web presentation được tạo ra để hoạt động trên tất cả các platform, tất cả các browser và được cài đặt dưới dạng một browser plug-in. Khi người sử dụng đến thăm một trang web có control được viết bằng WPF/E, browser plug-in sẽ chạy, thực thi code và render ra giao diện tại vị trí mà control được nhúng trong trang web. WPF/E cung cấp môi trường giàu đồ họa hơn nhiều so với những trang web sử dụng HTML và JavaScript truyền thống. Sử dụng WPF/E một cách có điều độ, có nghệ thuật, developer hoàn toàn có thể gây ấn tượng mạnh với khách hàng bằng mức độ tương tác đồ họa tuyệt vời, sử dụng những hiệu ứng vector, hiển thị hình ảnh, phát âm thanh và chơi các đoạn video.

Những lời quảng cáo trên nghe có vẻ quen quen, đơn giản là trước khi WPF/E ra đời vào năm 2006 (bản Community Tech Review), đã tồn tại rất nhiều công nghệ dạng plug-in tương tự, và chúng đã đáp ứng được phần nào nhu cầu về đồ họa trên World Wide Web, có thể kể ra một vài cái tên như Java, ActiveX, Shockwave và thành công nhất là Adobe Flash. Tất cả những công nghệ này vẫn còn được sử dụng cho đến ngày hôm nay, nhưng chưa có công nghệ nào được phát triển thành một nền tảng thống trị cho việc lập trình ra những ứng dụng web đa phương tiện. Hầu hết chúng đều chưa giải quyết được các vấn đề liên quan một cách triệt để, ví dụ như:

  • Sự khó khăn khi cài đặt.
  • Công cụ lập trình và thiết kế nghèo nàn.
  • Không tương thích với các browser và các hệ điều hành khác nhau.

Read more

XAML

XAML là gì?

  • XAML (viết tắt của cụm từ Extensible Application Markup Language, phát âm là “zammel”) là một ngôn ngữ đánh dấu được sử dụng để tạo ra các đối tượng trong .NET.
  • Ta có thể tạo ra các phần tử đồ họa (UI) với những khai báo thông qua thẻ trong XAML. Sau đó ta có thể dùng file mã lệnh tách biệt của nó (code-behind) để trả về những sự kiện và điều khiển những đối tượng mà ta đã định nghĩa trong XAML.
  • Mặc dù XAML là một công nghệ có thể ứng dụng trong nhiều lĩnh vực khác nhau nhưng vai trò chính của nó là để xây dựng giao diện trong các ứng dụng WPF. Nói cách khác, XAML định nghĩa sự sắp xếp các Panel, Button, Label,… để tạo nên một window trong các ứng dụng WPF. Giống như HTML, có khá nhiều công cụ hỗ trợ việc viết XAML một cách trực quan.Để xây dựng các ứng dụng có yêu cầu cao về giao diện thì phương pháp hiệu quả nhất là tách riêng phần thiết kế giao diện và phần viết code cho ứng dụng. Với phương pháp này, Designer và Developer có thể làm việc song song và khi hoàn thành sẽ tích hợp lại với nhau.
  • Trước khi WPF xuất hiện thì việc tách biệt giao diện ra khỏi code là vô cùng khó khăn. Điều này rất dễ hiểu vì với Windows Form, mọi thứ bạn tạo ra đều được định nghĩa trong code C#, VB.NET,… trong khi Designer lại thường không có kiến thức về các ngôn ngữ lập trình phức tạp này. Rất may, mọi thứ đã thay đổi khi WPF xuất hiện. Với WPF, Designer và Developer có thể làm việc hoàn toàn độc lập. Chìa khóa cho sự cộng tác giữa Designer và Developer trong các ứng dụng WPF chính là XAML.

Read more

MultiPoint

MultiPoint SDK là một bộ thư viện miễn phí được Microsoft phát triển, hỗ trợ kết nối và sử dụng nhiều con chuột ngay trên một máy tính duy nhất. Với việc sử dụng bộ SDK này ta có thể viết những ứng dụng WPF mà trong đó có sự tham gia của nhiều người dùng, mỗi người điều khiển một con trỏ trên màn hình để tương tác. Tên đầy đủ của bộ công cụ này là Microsoft MultiPoint SDK và tránh lầm lẫn với các định nghĩa Multipoint khác có thể gặp ở lĩnh vực mạng máy tính.

Sơ lược nguồn gốc

MultiPoint là một công nghệ rất mới, mới được khởi xướng năm 2005 và được nghiên cứu, ứng dụng trong thời gian gần đây. MultiPoint cũng là một công nghệ rất được chú ý trong cuộc thi Imagine Cup năm 2009 của Microsoft.

Bộ công cụ này phát xuất từ thực tế nghiên cứu tình hình dạy vi tính cho học sinh ở Ấn Độ. Với việc thiếu thốn máy tính, thông thường phải để nhiều em sử dụng chung một máy, thường là 5 em. Và khi dùng chung thì xảy ra tình trạng tranh giành, và thường có 1 vài em chuyên giành phần, làm giáo viên phải luân phiên đổi người điều khiển máy trong từng nhóm để các em đều được sử dụng. Tình trạng này là cản trở đối với việc đào tạo.

Read more