XAML – Extensible Application Markup Language (phát âm là “zammel”) là một ngôn ngữ đánh dấu dùng để thể hiện các đối tượng trong .NET. Mặc dù XAML là một công nghệ có thể dùng để giải quyết nhiều loại vấn đề khác nhau, nhưng vai trò chính của nó là dùng để xây dựng giao diện người dùng WPF. Nói cách khác, XAML documents sẽ định nghĩa cách sắp xếp, thể hiện các control, buttons trong cửa sổ của một chương trình WPF.

Understanding XAML

Các nhà phát triển phần mềm từ lâu đã biết rằng, cách hiệu quả nhất để giảm bớt tính phức tạp, nâng cao chất lượng giao diện người dùng trong việc xây dựng ứng dụng chính là cần phải tách rời việc design ra khỏi mã nguồn chương trình. Bằng cách đó, các nhà thiết kế có thể tạo ra giao diện đẹp hơn, thể hiện được tính nghệ thuật, còn programmer có thể phát triển code thoải mái hơn.

Graphic User Interfaces before WPF

Trước đây, không có cách nào đơn giản để có thể tách rời giữa các nội dung về đồ họa ra khỏi code. Vấn đề trong tâm trong các ứng dụng sử dụng Windows Form đó là tất cả các form bạn tạo ra đều được định nghĩa lại toàn bộ bằng C#. Khi bạn tạo ra một control trên giao diện, Visual Studio sẽ tự động tạo ra code tương ứng từ các class có sẵn. Đáng tiếc là các nhà thiết kế giao diện lại không có bất kì công cụ nào có thể làm việc với mã nguồn C#. Để giải quyết vấn đề đau đầu này, Microsoft đã sáng tạo ra công nghệ WPF cùng với XAML. Khi bạn thiết kế một ứng dụng WPF trong Visual Studio, cửa sổ mà bạn đang thiết kế sẽ không chuyển thành code C# như Windows Form. Thay vào đó, giao diện này sẽ được định nghĩa bằng tập hợp các tag XAML. Khi chạy ứng dụng, các thẻ này được dùng để phát sinh ra các đối tượng dùng trong user interface.


Note: Cần phải hiểu một điều rằng, WPF không bắt buộc phải có XAML. Không có lí do gì buộc Visual Studio không sử dụng Windows Form để tạo ra các dòng code để xây dựng các cửa sổ trong WPF. Tuy nhiên, nếu làm vậy, các windows sẽ phụ thuộc vào Visual Studio và chỉ có programmer mới có thể design cũng như edit nó. XAML mở ra cho bạn khả năng kết hợp vô cùng phong phú, bởi vì các công cụ thiết kế khác có thể hiểu được định dạng XAML. Ví dụ, một designer kinh nghiệm có thể sử dụng một công cụ như Expression Design để thiết kế giao diện cho ứng dụng WPF của bạn, hoặc một công cụ như Expression Blend để xây dựng các hiệu ứng animation cho nó.


Các biến thể của XAML

Hiện nay, XAML có một tập con như:

  • WPF XAML chứa các thành phần dùng để mô tả nội dung WPF như hình ảnh vector, các controls, documents. Hiện nay, đây là ứng dụng quan trọng nhất của XAML.
  • XPS XAML là một tập con của WPF XAML sử dụng các quy tắc của XML để tạo ra các tài liệu điện tử. Nó được công bố như một bộ phận tách rời của chuẩn XML Paper Specification (XPS).
  • Silverlight XAML cũng là một bộ phận của WPF XAML được sử dụng trong các ứng dụng Silverlight.
  • WF XAML chứa các thành phần để biểu diển các nội dung của Windows Workflow Foundation (WF).

Biên dịch XAML

Những người sáng tạo ra WPF biết rằng XAML không chỉ cần phải giải quyết các vấn đề về việc kết hợp giữa thiết kế và coding – nó còn cần phải đảm bảo thực hiện nhanh chóng. Và mặc dù các định dạng tuân theo chuẩn XML như XAML rất tiện lơi, sử dụng linh hoạt với nhiều công cụ, platforms khác nhau, tuy nhiên không phải lúc nào nó cũng mang lại sự hiệu quả. XML được thiết kế với mục tiêu đảm bảo tính logic, dễ đọc, dễ hiểu, nhưng lại không cô đọng, súc tích. WPF giải quyết những điểm tồn tại này bằng việc tạo ra BAML – Binary Application Markup Language. BAML thực ra chỉ là biểu diễn lại các tài liệu XAML dưới dạng nhị phân. Khi bạn biên dịch một ứng dụng WPF trong VS, tất cả tài liệu XAML đều được chuyển thành BAML. Nhờ đó, việc biên dịch sẽ trở nên nhanh hơn.

Creating XAML with Visual Studio

Khi thiết kế một ứng dụng WPF, bạn không cần phải viết tất cả các mã XAML bằng tay. Thay vào đó, bạn sẽ sử dụng công cụ như VS. Có thể bạn sẽ tự hỏi liệu có thực sự cần thiết phải học qua cú pháp của XAML. Câu trả lời là . Hiểu được XAML là điều cốt yếu trong thiết kế ứng dụng WPF. Nó giúp bạn hiểu được các nội dung chủ yếu của WPF, ví dụ như attached properties, layout, routed event, content model… Quan trọng hơn, một vài công việc mà chỉ có thể – hoặc sẽ dễ thực hiện hơn – chỉ khi bạn tự viết mã XAML. Các công việc đó bao gồm:

  • Kết nối với các trình xử lí sự kiện (event handlers)
  • Viết các câu lệnh data binding. Data binding cho phép bạn lấy dữ liệu từ một đối tượng và hiển thị nó trên một element định sẵn.
  • Khai báo các resources. Resources là các đối tượng mà bạn chỉ cần định nghĩa một lần trong WPF trong một vị trí nhất định nào đó trong XAML và bạn có thể sử dụng lại các resources này ở nhiều nơi khác trong XAML.
  • Định nghĩa các animations. Animations là một thành phần được sử dụng phổ biến trong ứng dụng WPF. Thông thường, ta khai báo các animation này như các resources bằng XAML và liên kết nó với các control khác (hoặc kích hoạt bằng code).
  • Định nghĩa control templates.

 

Xem thêm: