Một khái niệm dễ nhầm lẫn và tương đối phổ biến mà tôi thấy mọi người khi bắt đầu với WPF là họ cảm thấy rằng đó là khó tiếp cận, quá phức tạp và quá cồng kềnh. Có một số thay đổi cơ bản mà mỗi lập trình viên phải xử lý khi lần đầu tiên chuyển sang học WPF. Hãy cùng mình tìm hiểu WPF trong lập trình là gì nhé.
1. WPF C# là gì?
WPF, viết tắt của Windows Presentation Foundation, là hệ thống API mới hỗ trợ việc xây dựng giao diện đồ hoạ trên nền Windows.
Cũng có thể gọi WPF là một GUI framework. Nó ra đời sau Winform và có nhiều sự thay đổi về mọi mặt.
WPF được xem như thế hệ kế tiếp của WinForms, WPF tăng cường khả năng lập trình giao diện của lập trình viên bằng cách cung cấp các API cho phép tận dụng những lợi thế về đa phương tiện hiện đại.
2. Giao diện người dùng hiện đại và những thách thức của nó
Hiện nay, giao diện người dùng trực quan có vị trí quan trọng. Việc trình diễn đúng thông tin, theo đúng cách và vào đúng thời điểm có thể đem lại những giá trị kinh tế xã hội đáng kể.
Việc cung cấp một giao diện người dùng mạnh có thể tạo nên sự khác biệt giữa một công ty với các đối thủ cạnh tranh, góp phần làm tăng tăng doanh số và giá trị thương hiệu của hãng này so với hãng khác.
Để có được một giao diện người dùng như vậy, việc tích hợp đồ họa, media, văn bản và các thành phần trực quan khác như một thể thống nhất đóng đóng vai trò mấu chốt.
Xem thêm: C sharp là gì?
3. Mục tiêu của công nghệ WPF
WPF được xây dựng nhằm vào ba mục tiêu cơ bản dưới đây:
- Cung cấp được một nền tảng thống nhất để xây dựng giao diện của người dùng.
- Giúp người lập trình và người thiết kế giao diện làm việc cùng nhau một cách dễ dàng.
- Cung cấp một công nghệ chung để xây dựng giao diện người dùng trên cả Windows và trình duyệt Web.
Trước khi WPF ra đời, việc tạo giao diện người dùng theo những yêu cầu mô tả ở ví dụ trên đòi hỏi cần áp dụng nhiều công nghệ khác nhau. Giúp việc lập trình wpf trở nên dễ dàng.
Để tạo form, control và các tính năng kinh điển khác của một giao diện đồ họa Windows, lập trình viên sẽ chọn Windows Forms, một phần của .NET Framework. Nếu cần hiển thị văn bản, Windows Forms có một số tính năng hỗ trợ văn bản trực tiếp.
4. Một số tính năng nổi trội của WPF
WPF mang đến cho việc lập trình trở nên đơn giản hơn trong việc thiết kế giao diện, xử lý dữ liệu giúp việc lập trình dễ dàng và mạnh mẽ hơn hẳn Windows Forms.
Cùng với nền tảng .NET 4.5 hỗ trợ Web API, giúp chúng ta dễ dàng xây dựng các ứng dụng điện toán đám mây.
WPF hỗ trợ hiệu ứng dựa trên thời gian thực thi của chương trình. Các hiệu ứng đơn giản có thể xử lý bằng việc quản lý thời gian chạy, còn các xử lý phức tạp hơn cần đến sự hỗ trợ của lớp Animation.
- Tất cả các thuộc tính của đối tượng trong WPF đều có thể được xử lý để trở nên sinh động hơn.
- Các lớp quản lý hiệu ứng tùy theo loại của thuộc tính được xử lý.
Nền tảng thống nhất để xây dựng giao diện người dùng.
Khả năng làm việc chung giữa người thiết kế giao diện và lập trình viên
Do có sự xuất hiện của XAML đã phá vỡ bức tường giữa Developer và Designer, trước kia khi phát triển ứng dụng Winforms thì công việc của cả Developer và Designer rất nặng, yêu cầu cả 2 bên phải có hiểu biết về nhiều công cụ. Còn trong quá trình phát triển ứng dụng WPF, công việc của Designer và Developer đều được giảm nhẹ do Developer và Designer có thể chia sẻ với nhau đoạn mã XAML chung, tách biệt phần giao diện ra khỏi Code-behind.
5. Thành phần của WPF bao gồm
WPF tổ chức các chức năng theo một nhóm namespace cùng trực thuộc namespace System.Windows.
Cấu trúc cơ bản của mọi ứng dụng WPF đều gần như nhau. Là ứng dụng Windows độc lập hay là một XBAP, một ứng dụng WPF điển hình bao giờ cũng gồm một tập các trang XAML và phần code tương ứng được viết bằng C# hoặc Visual Basic, còn gọi là các file code-behind.
Mặc dù WPF cung cấp một nền tảng thống nhất để tạo giao diện người dùng, những công nghệ mà WPF chứa đựng có thể phân chia thành những thành phần độc lập.
6. Công nghệ chung cho giao diện trên Windows và trên trình duyệt Web
Hiện nay, các ứng dụng Web ngày một phát triển. Việc trang bị giao diện người dùng với đầy đủ tính năng như một ứng dụng desktop sẽ thu hút nhiều người sử dụng.
Tuy nhiên, như đã nêu trong phần đầu, với những công nghệ truyền thống, để phát triển một giao diện đồ họa vừa hoạt động trên desktop vừa trên trình duyệt Web.
Vì vậy, đòi hỏi phải sử dụng những công nghệ hoàn toàn khác nhau, giống như việc xây dựng hai giao diện hoàn toàn độc lập. Điều này tạo ra chi phí không cần thiết để phát triển giao diện.
WPF chính là một giải pháp cho vấn đề này. Lập trình viên có thể tạo ra một ứng dụng trình duyệt XAML (XBAP) sử dụng WPF chạy trên Internet Explore. Trên thực tế, cùng đoạn code này có thể được dùng để sinh ứng dụng WPF chạy độc lập trên Windows.
7. So sánh WPF với WinForms trong lập trình
Sự khác biệt quan rõ ràng, quan trọng nhất giữa WinForms và WPF đó là trong khi WinForms đơn giản là một lớp dựa trên chuẩn Windows Controls (ví dụ như TextBox). Nhưng với WPF được xây dựng từ đầu và không dựa vào các chuẩn Windows controls trong đa số các tình huống.
Dưới đây là những lợi thế chính của WPF và WinForms. Nó sẽ cung cấp cho bạn một ý tưởng tốt hơn về những gì bạn đang làm.
Ưu điểm của WPF:
- Nó mới hơn và do đó phù hợp hơn với các tiêu chuẩn hiện tại.
- Microsoft đang sử dụng nó cho rất nhiều ứng dụng mới, ví dụ: Visual Studio
- Nó linh hoạt hơn, có thể làm nhiều việc hơn mà không phải viết hoặc mua các control mới.
- Khi bạn cần sử dụng các control của bên thứ 3, các nhà phát triển các control này có thể sẽ tập trung hơn vào WPF vì nó mới hơn.
- XAML giúp dễ dàng tạo và chỉnh sửa GUI của bạn và cho phép công việc được phân chia giữa một nhà thiết kế (XAML) và một lập trình viên (C #, VB.NET, v.v.)
- Databinding, cho phép bạn có được một sự tách biệt hơn giữa data và layout.
- Sử dụng tăng tốc phần cứng để vẽ GUI, để có hiệu suất tốt hơn.
- Nó cho phép bạn tạo giao diện người dùng cho cả ứng dụng Windows và các ứng dụng web (Silverlight / XBAP)
Ưu điểm của WinForms:
- Nó cũ hơn và do đó được thử nghiệm và kiểm tra nhiều hơn.
- Đã có rất nhiều control của bên thứ ba mà bạn có thể mua hoặc nhận miễn phí
- Các nhà thiết kế trong Visual Studio vẫn còn, bằng văn bản, tốt hơn cho WinForms hơn cho WPF, nơi bạn sẽ phải làm nhiều công việc của mình cho mình với WPF.
8. Các tính năng nổi bật của wpf
8.1 DataBinding Overview
WPF data binding đưa ra một phương pháp đơn giản và thích hợp để trình bày và tương tác với dữ liệu.
Các phần tử được liên kết đến dữ liệu nguồn (Data Sources) từ một biến giá trị của dữ liệu nguồn. Ngòai ra DataBinding rất hữu hiệu trong việc tự động cập nhật dữ liệu giữa model và giao diện người dùng.
- OneWay: Cập nhật target property theo source property.
- TwoWay: Cập nhật hai chiều giữa target property và source property.
- OneTime: Khởi tạo target property từ source property. Sau đó việc cập nhật dữ liệu sẽ không được thực hiện.
- OneWayToSource: Giống OneWay nhưng theo hướng ngược lại: cập nhật từ target property sang source property.
- Default: Hướng binding dựa trên target property. Với target property mà người dung có thể thay đổi giá trị (như Text) thì nó là TwoWay, còn lại là OneWay.
8.2 Update Source Trigger
Khi 2 thuộc tính được binding với nhau, khi 1 bên thay đổi bên còn lại sẽ được cập nhập.
Hai chế độ Binding OneWay và TwoWay, thuộc tính Binding UpdateSourceTrigger cho phép thiết lập thời điểm binding source sẽ được cập nhật. Enum UpdateSourceTrigger bao gồm 4 giá trị:
- Default:
- PropertyChanged:
- LostFocus:
- Explicit:
8.3 Resource
Một resource là có thể tái sử dụng ở nhiều nơi khác nhau trong ứng dụng. WPF hỗ trợ nhiều loại resource, trong đó 2 loại chính là : XAML resources và resource data files.
Resource thường được dùng để định nghĩa các Style hoặc Template.
Resource Dictionary là cách lưu trữ các resource theo dạng hash table. Mỗi phần tử trong resource là một đối tượng do đó ta có thể truy xuất thông qua chỉ thị x:Key.
Resource Dictionary là một template trong Visual Studio, vì vậy ta có thể tạo một file XAML dạng Resource Dictionary bằng cách thêm mới một Item <Resoure Dictionary>
8.4 So sánh Static Resourcevà Dynamic Resource:
Các đặc điểm khác biệt chính của hai loại resource này là:
- Static Resource: sẽ mang một giá trị duy nhất mỗi lần khởi tạo trong khi Dynamic Resource có thể được gọi nhiều lần mỗi khi cần thiết trong quá trình biên dịch.
- Dynamic Resource thực thi hiệu quả hơn Static Resource vì việc lấy dữ liệu tài nguyên xảy ra mỗi khi nó yêu cầu hay khi cần thiết.
- Static Resource có tốc độ nhanh hơn nhưng có phát sinh thêm thời gian khởi tạo khi load page.
9. Tổng kết
Từ những nội dung trên, có thể thấy rằng WPF có những tính năng vượt trội giúp cho các lập trình viên và người thiết kết giao diện có thể làm việc với nhau tốt hơn. Học lập trình WPF C# đang là xu hướng hiện nay để đáp ứng nhu cầu cho sự phát triển của ngôn ngữ lập trình.
Tài liệu tham khảo wpf:
https://vi.wikipedia.org/wiki/Windows_Presentation_Foundation
Bài viết cùng chủ đề:
- Tìm hiểu mô hình lập trình MVVM chi tiết, so sánh với các mô hình khác.