Hướng dẫn WPF cho người mới bắt đầu
⚡ Tóm tắt thông minh
WPF (Windows Về chúng tôi Foundation) là Microsoftkhung của để xây dựng phong phú Windows Ứng dụng máy tính để bàn. Người mới bắt đầu sẽ học cách kết hợp XAML, liên kết dữ liệu và đồ họa tăng tốc phần cứng để tạo ra giao diện người dùng trực quan, có khả năng mở rộng với ít mã hơn.

WPF là gì?
WPF là khuôn khổ để xây dựng Windows WPF là viết tắt của... Windows Về chúng tôi Foundation.
WPF có thể được coi là một bước tiến hóa so với WinForms. Nó cung cấp một hệ thống hiển thị đồ họa dễ sử dụng cho... Windows và cung cấp sự phân tách rõ ràng giữa giao diện người dùng và logic nghiệp vụ.
Các ứng dụng WPF thường được triển khai dưới dạng các chương trình máy tính để bàn độc lập, và chúng cũng có thể được nhúng dưới dạng các đối tượng trong các ứng dụng khác.
Tại sao lại là WPF?
Có rất nhiều lý do để sử dụng nền tảng WPF. Một số lý do nổi bật là:
- Một nền tảng lý tưởng để sử dụng nếu bạn cần xử lý nhiều loại phương tiện khác nhau
- WPF cho phép bạn tạo giao diện người dùng có thể tùy chỉnh giao diện. Nó cũng hỗ trợ bạn khi cần tải một phần giao diện người dùng hoặc muốn liên kết dữ liệu XML.
- Nó cho phép bạn tận dụng lợi ích của thư viện lớp .NET lớn vì nó được xây dựng trên công nghệ .NET
- Khả năng hoạt động độc lập với độ phân giải, do đó các ứng dụng được phát triển bằng WPF có thể chạy trên màn hình máy tính bảng nhỏ hoặc màn hình 20 inch.
- WPF được xây dựng trên DirectX thay vì WinAPI. Nó sử dụng hệ thống đồ họa của máy tính người dùng, do đó cung cấp khả năng hiển thị đồ họa mạnh mẽ hơn.
- Hỗ trợ mô hình tài liệu dạng dòng chảy, cho phép bố cục đạt chất lượng "xuất bản trên máy tính để bàn".
- Hình thức bên ngoài và hành vi bên trong có mối liên hệ lỏng lẻo. Điều này cho phép các nhà thiết kế và nhà phát triển làm việc trên hai mô hình riêng biệt.
- Trong framework WPF, bạn có thể thiết kế công cụ bằng đồ họa sử dụng các tài liệu XML đơn giản thay vì phải phân tích mã.
- Cho phép bạn sử dụng khả năng tăng tốc phần cứng để vẽ GUI, để có hiệu suất tốt hơn
Tiếp theo, chúng ta hãy xem khuôn khổ này đã phát triển như thế nào theo thời gian.
Lịch sử của WPF
Windows 1.0 là môi trường GUI đầu tiên từ MicrosoftNó hoạt động như một lớp nằm trên hệ điều hành DOS, dựa vào các hệ thống GDI và USER để xử lý đồ họa và giao diện người dùng.
DirectX được giới thiệu vào năm 1995 như một hệ thống đồ họa hiệu năng cao dành cho trò chơi và các môi trường liên quan đến đồ họa khác. Qua nhiều năm, nhiều phiên bản đã được phát hành, và DirectX 9 cung cấp một thư viện có thể được sử dụng với mã .NET được quản lý.
| Phiên bản WPF | Năm phát hành | Phiên bản .Net | Phiên bản Visual Studio | Tính năng |
|---|---|---|---|---|
| 3.0 | 2006 | 3.0 | N/A | Phát hành lần đầu. Tuy nhiên, việc phát triển WPF có thể được thực hiện bằng VS 2005. |
| 3.5 | 2007 | 3.5 | Vs 2008 | Sửa đổi và cải tiến trong: Mô hình ứng dụng, liên kết, điều khiển, tài liệu, chú thích và các phần tử giao diện người dùng 3D. |
| 3.5 SP1 | 2008 | 3.5 SP1 | N/A | Hỗ trợ màn hình giật gân gốc. Kiểm soát trình duyệt web mới, hỗ trợ đổ bóng pixel DirectX. |
| 4.0 | 2010 | 4.0 | Vs 2010 | Các điều khiển mới: Lịch, Lưới dữ liệu, Bộ chọn ngày. Hỗ trợ cảm ứng đa điểm và thao tác đa điểm. |
| 4.5 | 2012 | 4.5 | Vs 2012 | Khởi động nhanh hơn, hiệu năng được cải thiện khi hiển thị các tập dữ liệu lớn. Mới tích hợp điều khiển Ribbon và giao diện INotifyDataErrorInfo để kiểm tra tính hợp lệ của dữ liệu. |
| 4.5.1 | 2013 | 4.5.1 | Vs 2013 | Cải thiện nhỏ về hiệu năng và độ tin cậy. |
| 4.5.2 | 2014 | 4.5.2 | NA | Không có thay đổi lớn |
| 4.6 | 2015 | 4.6 | Vs 2015 | Hỗ trợ cửa sổ con trong suốt Cải tiến HDPI và Touch |
| 4.8 | 2019 | 4.8 | Vs 2019 | Phiên bản phát hành chính cuối cùng của .NET Framework, với các bản sửa lỗi cho độ phân giải cao và cải tiến về khả năng truy cập. |
| Từ .NET Core 3.0 trở đi | Xuất hiện | Từ .NET Core 3.0 đến .NET 10 | So với 2019/2022 | WPF trở thành mã nguồn mở và được tích hợp sẵn trong .NET hiện đại (các ứng dụng vẫn giữ nguyên). Windows-chỉ một). |
WPF không còn được đánh số phiên bản riêng biệt với .NET nữa. Từ năm 2019, nó được phát hành như một thành phần mã nguồn mở của nền tảng .NET hiện đại, và phiên bản hiện tại được tích hợp trong .NET 10, ra mắt vào tháng 11 năm 2025 dưới dạng phiên bản hỗ trợ dài hạn (LTS).
Tính năng của WPF
Sơ đồ bên dưới nhóm các khả năng chính của WPF, được liệt kê chi tiết bên dưới.

- Tài liệu và In ấn
- Bảo mật, khả năng truy cập và bản địa hóa
- Cung cấp khả năng tương tác với Windows Điều khiển biểu mẫu
- Direct3D được sử dụng trong các ứng dụng đồ họa trong đó hiệu suất là quan trọng
- Sử dụng phần cứng card màn hình để hiển thị
- Đồ họa vector cho phép bạn phóng to thu nhỏ ứng dụng mà không làm giảm chất lượng.
- WPF hỗ trợ hệ thống điểm ảnh logic dấu phẩy động và màu ARGB 32 bit.
- Xác định lại kiểu và mẫu điều khiển
- Xây dựng phông chữ quốc tế từ phông chữ tổng hợp
- Việc hiển thị văn bản trong WPF tận dụng công nghệ ClearType.
- Cho phép bạn sử dụng kỹ thuật lưu vào bộ đệm của văn bản được kết xuất trước trong bộ nhớ video
- Phương pháp tiếp cận dựa trên nguồn lực cho mọi biện pháp kiểm soát
- Bộ tính giờ trình bày được khởi tạo và quản lý bởi WPF
- Mối quan hệ giữa video và hoạt hình cũng được hỗ trợ
- Trong WPF, kiểu dáng là một tập hợp các thuộc tính cần được áp dụng cho nội dung được sử dụng để hiển thị trực quan.
- Các mẫu trong WPF giúp bạn thay đổi giao diện người dùng của tài liệu.
- Các lệnh mang tính tuyệt đối hơn.tracphiên bản t và liên kết lỏng lẻo của các sự kiện
- Hỗ trợ WPF cho các lệnh giúp giảm số lượng mã chúng ta cần viết
Tiếp theo trong WPF này hướng dẫn C#Chúng ta sẽ tìm hiểu về các kiểu dữ liệu cốt lõi và cơ sở hạ tầng của WPF.
Các loại và cơ sở hạ tầng cốt lõi của WPF
Các lớp trong WPF được chia thành bốn loại khác nhau:
- UIElement
- Phần tử khung
- Phần tử nội dung
- Phần tử nội dung khung
Các lớp này được gọi là các lớp phần tử cơ bản. Chúng cung cấp nền tảng cho mô hình xây dựng giao diện người dùng.
Giao diện người dùng WPF được cấu tạo từ các phần tử được sắp xếp theo cấu trúc cây phân cấp gọi là cây phần tử. Cây phần tử là một cách trực quan để bố trí giao diện người dùng, và đó là cấu trúc giúp bạn có được các dịch vụ giao diện người dùng mạnh mẽ.
XML
Ngôn ngữ đánh dấu ứng dụng mở rộng, viết tắt là “XAML” (phát âm là “zammel”), là một cách khai báo để định nghĩa giao diện người dùng.
Đây là định nghĩa XAML của một nút đơn giản:
<Button FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center" > Say Hello Guru99</Button>
Ưu điểm của việc sử dụng ngôn ngữ XAML:
- XAML tách biệt giao diện người dùng (front-end) và logic phía máy chủ (back-end).
- XAML là phương pháp đơn giản nhất để thể hiện giao diện người dùng
- XAML hoạt động hiệu quả với các công cụ thiết kế.
Điều khiển
Khung WPF hỗ trợ nhiều thành phần hữu ích như:
- Chỉnh sửa các điều khiển như Văn bảnBox, Kiểm traBox, Nút radio
- Danh sách điều khiển chẳng hạn như Danh sáchBox, Chế độ xem danh sách, Chế độ xem dạng cây
- Thông tin người dùng như Label, WPF ProgressBar, ToolTip
- Hành động như Menu, Nút và Thanh công cụ
- Các giao diện như Border, WPF Image và Viewbox
- Các hộp thoại thông dụng như OpenFileDialog và PrintDialog.
- Các thành phần chứa như TabControl, ScrollBar và Group.Box
- Các bố cục như DockPanel, StackPanel và Grid
- Điều hướng như Khung và Siêu liên kết
Sự xuất hiện của các điều khiển có thể được tùy chỉnh theo kiểu và mẫu mà không cần lập trình. Bạn cũng có thể tạo điều khiển tùy chỉnh bằng cách tạo ra một lớp mới từ lớp cơ sở thích hợp.
Màu sắc và hình dạng:
WPF cung cấp một tính năng để tùy chỉnh giao diện ứng dụng của bạn. Nó cho phép bạn đặt đối tượng và giá trị cho những thứ như phông chữ, hình nền, v.v.
Tính năng kiểu dáng cho phép bạn chuẩn hóa một diện mạo cụ thể cho toàn bộ sản phẩm. Nó cho phép bạn thay thế giao diện mặc định trong khi vẫn giữ nguyên hành vi mặc định của nó.
Mẫu dữ liệu cho phép bạn kiểm soát cách hiển thị mặc định của dữ liệu được liên kết. Với sự trợ giúp của các chủ đề, bạn có thể dễ dàng áp dụng các kiểu hiển thị trực quan của hệ điều hành.
Bố cục & Bảng điều khiển
Thiết kế bố cục giúp bạn định vị và điều chỉnh kích thước các thành phần điều khiển một cách chính xác. Nó là một phần của quá trình tạo ra giao diện trình bày cho người dùng. Khung WPF đơn giản hóa quá trình thiết kế bố cục và cung cấp khả năng thích ứng tốt hơn về giao diện người dùng.
Cấu trúc bố cục được cung cấp bởi năm lớp chính: 1) StackPanel 2) DockPanel 3) WrapPanel 4) Grid và 5) Canvas
Đồ họa
WPF cung cấp một hệ thống đồ họa được cải tiến:
- WPF sử dụng các đơn vị độc lập với thiết bị, cho phép độ phân giải và tính độc lập với thiết bị. Mỗi pixel độc lập với thiết bị sẽ tự động điều chỉnh kích thước theo mật độ điểm ảnh (dots-per-inch) của hệ thống.
- WPF sử dụng double thay vì float và hỗ trợ nhiều màu sắc hơn
- Công cụ đồ họa WPF được thiết kế theo cách có thể tận dụng phần cứng đồ họa khi có sẵn
Tài liệu và In ấn
Khung WPF cung cấp ba loại tài liệu:
- Tài liệu cố định: Loại tài liệu này hỗ trợ WYSIWBài thuyết trình của YG.
- Tài liệu dòng chảy: Cho phép bạn điều chỉnh và chỉnh lại nội dung dựa trên các biến thời gian chạy như kích thước cửa sổ và độ phân giải của thiết bị.
- Tài liệu XPS: Bản trình bày dạng trang của giấy điện tử ở định dạng XML. XPS là một định dạng tài liệu mở, tiêu chuẩn hóa.
WPF cho phép kiểm soát tốt hơn hệ thống in ấn, bao gồm cả in từ xa và hàng đợi. Hơn nữa, tài liệu XPS có thể được in trực tiếp mà không cần chuyển đổi sang định dạng in khác.
Sau khi đã tìm hiểu các thành phần cơ bản, chúng ta hãy xem các mảnh ghép này kết hợp với nhau như thế nào bên trong.
WPF Archikiến trúc
WPF là một phần của framework .NET. Nó bao gồm cả mã được quản lý và mã không được quản lý. Các thành phần quan trọng của kiến trúc WPF được giải thích trong hình dưới đây:
Các thành phần của kiến trúc WPF
- PresentationFrameworkGiúp bạn tạo ra các thành phần cấp cao như điều khiển, kiểu dáng, bố cục, cửa sổ, v.v.
- PresentationCoreNó chứa các kiểu dữ liệu cơ bản như UIElement và Visual, từ đó tất cả các điều khiển và hình dạng trong PresentationFramework.dll đều được kế thừa.
- CLR: Nó làm cho quá trình phát triển trở nên hiệu quả bằng cách cung cấp các tính năng như quản lý bộ nhớ, xử lý lỗi, v.v.
- Milcore: Milcore là một phần của mã không được quản lý cung cấp khả năng tích hợp chặt chẽ với DirectX.
- DirectX: Đây là API cấp thấp chịu trách nhiệm hiển thị đồ họa của WPF. DirectX tương tác với trình điều khiển và hiển thị nội dung.
- Người dùng32: Đây là một API cốt lõi được nhiều chương trình sử dụng rộng rãi. Nó quản lý bộ nhớ và phân tách tiến trình. User32 giúp bạn quyết định phần tử nào sẽ được đặt ở vị trí nào trên màn hình.
- hạt nhân: Dữ liệu đầu vào bắt nguồn từ một tín hiệu trên trình điều khiển thiết bị ở chế độ nhân và được định tuyến đến tiến trình chính xác bằng cách kết nối với... Windows hạt nhân và User32.
Liên kết dữ liệu WPF
Liên kết dữ liệu là một trong những khái niệm mạnh mẽ nhất trong WPF. Thay vì viết mã để sao chép thủ công các giá trị giữa các điều khiển và đối tượng, bạn khai báo một kết nối trong XAML, và WPF sẽ tự động giữ cho cả hai phía được đồng bộ hóa. Ví dụ:
<TextBox Text="{Binding Path=StudentName, Mode=TwoWay}" />
WPF hỗ trợ bốn chế độ liên kết:
- Một chiều: Quá trình điều khiển sẽ cập nhật khi dữ liệu nguồn thay đổi.
- Hai chiều: Sự thay đổi diễn ra theo cả hai chiều giữa bộ điều khiển và nguồn.
- Một lần: Bộ điều khiển chỉ đọc giá trị nguồn một lần duy nhất, tại thời điểm tải.
- OneWayToSource: Sự kiểm soát truyền giá trị của nó đến nguồn, chứ không bao giờ ngược lại.
Liên kết dữ liệu cũng là động lực đằng sau mô hình MVVM (Model-View-ViewModel), kiến trúc phổ biến nhất cho các ứng dụng WPF chuyên nghiệp, bởi vì nó cho phép giao diện người dùng nằm trong XAML trong khi logic được lưu trữ trong các lớp C# có thể kiểm thử.
💡 Mẹo: Hãy triển khai giao diện INotifyPropertyChanged trên các lớp dữ liệu của bạn. Nếu không, giao diện người dùng sẽ không được làm mới khi giá trị thuộc tính thay đổi trong mã.
Cài đặt WPF
Vui lòng tham khảo liên kết này để cài đặt WPF: https://www.guru99.com/download-install-visual-studio.html
Tiếp theo trong hướng dẫn lập trình ứng dụng WPF này, chúng ta sẽ xây dựng ứng dụng WPF đầu tiên của mình.
Làm cách nào để tạo ứng dụng WPF đầu tiên của bạn?
Trong ví dụ WPF này, chúng ta sẽ phát triển một ứng dụng WPF cơ bản. Vì vậy, hãy bắt đầu bằng cách làm theo các bước được hướng dẫn trong ví dụ ứng dụng WPF bên dưới.
Bước 1) Trong Visual Studio, hãy vào File > New > Project
Bước 2) Trong cửa sổ dự án mới
- Chọn ứng dụng WPF
- Nhập tên là “MyWPF”
- nhấn OK
Bước 3) Visual Studio tạo ra hai tập tin theo mặc định
- Tệp XAML (MainWindow.xaml)
- Tệp CS (MainWindow.xaml.cs)
MainWindow.xaml có
- Cửa sổ thiết kế
- Tệp XAML
Trong cửa sổ XAML, các thẻ sau được viết mặc định:
Lưới là phần tử đầu tiên theo mặc định.
Tệp MainWindow.xaml.cs chứa mã xử lý sự kiện tương ứng với tệp thiết kế XAML:
Bước 4) Trong hộp công cụ,
- Kéo văn bảnBox phần tử vào cửa sổ thiết kế
- Một văn bảnBox sẽ xuất hiện trong cửa sổ thiết kế
- Bạn sẽ thấy mã XAML cho phần Văn bản.Box thêm
Bước 5) Hãy đổi văn bản thành “Chương trình WPF đầu tiên”.
Bước 6) Nhấp vào nút Bắt đầu
Bước 7) Bạn sẽ thấy một cửa sổ trong kết quả đầu ra.
Chúc mừng! Bạn đã thiết kế và tạo ứng dụng WPF đầu tiên của mình. Tiếp theo trong hướng dẫn WPF dành cho người mới bắt đầu này, chúng ta sẽ thấy sự khác biệt giữa WPF và WinForms.
WPF so với WinForms
| WPF | WinForms |
|---|---|
| Đây là một framework mới hơn nên phù hợp hơn với các tiêu chuẩn hiện hành. | Nó cũ hơn nên được thử nghiệm nhiều hơn. |
| Nó linh hoạt và giàu tính năng. Bạn có thể thiết kế các ứng dụng rất phong phú mà không cần lập trình hay mua thêm các thành phần điều khiển. | Không có nhiều tính năng lắm |
| Nhà phát triển của 3rd Chức năng điều khiển nhóm tập trung vào khả năng tương thích với WPF vì đây là công nghệ của tương lai. | Có nhiều quyền kiểm soát của bên thứ ba mà bạn có thể mua hoặc nhận miễn phí. |
| XAML cho phép bạn tạo và chỉnh sửa giao diện người dùng (GUI) một cách dễ dàng. Nó cho phép phân chia công việc giữa nhà thiết kế (XAML) và lập trình viên (C#, VB.NET, v.v.). | In Windows Các biểu mẫu, tất cả mã đều được viết ở cùng một chỗ. |
| Kỹ năng lập trình XAML có thể áp dụng trực tiếp vào các framework mới hơn như WinUI 3, .NET MAUI và Avalonia UI. | Kỹ năng WinForms chủ yếu áp dụng cho các ứng dụng cổ điển. Windows Phát triển ứng dụng máy tính để bàn. |
| Bộ điều khiển hộp thư đến của WPF bị hạn chế | Kiểm soát hộp thư đến rất mạnh mẽ |
Loại ứng dụng được xây dựng bằng WPF
- WPF được sử dụng cho các ứng dụng độc lập. Windows Các ứng dụng máy tính để bàn như các công cụ nghiệp vụ doanh nghiệp, bảng điều khiển, thiết bị đầu cuối giao dịch và phần mềm thiết kế.
- Windows Các biểu mẫu và trang WPF có thể cùng tồn tại trong cùng một ứng dụng
- Bạn có thể phát triển các ứng dụng theo kiểu điều hướng trang/cửa sổ.
WPF trong .NET hiện đại
Microsoft WPF được công khai mã nguồn vào tháng 12 năm 2018, và kể từ .NET Core 3.0 (2019), framework này đã được tích hợp trong mọi phiên bản .NET hiện đại, cho đến .NET 10. Việc chuyển ứng dụng sang .NET hiện đại mang lại tốc độ khởi động nhanh hơn, triển khai đơn giản hơn thông qua việc xuất bản độc lập và truy cập vào các tính năng ngôn ngữ C# hiện tại, trong khi mô hình lập trình WPF vẫn giữ nguyên.
WPF vẫn còn Windows- Chỉ vậy thôi. Nếu bạn đang chọn một khung phần mềm máy tính để bàn hiện nay, bảng so sánh này sẽ hữu ích:
| Khung | tốt nhất cho |
|---|---|
| WPF | Trưởng thành, giàu tính năng Windows các ứng dụng máy tính để bàn với một hệ sinh thái khổng lồ |
| WindowsUI 3 | Các ứng dụng mới hướng đến thế giới hiện đại Windows 11. Hình thức và cảm nhận |
| .NET CỐ ĐỊNH | Các ứng dụng đa nền tảng trải rộng Windows, macOS, Androidvà iOS |
Vì WPF được duy trì tích cực và được sử dụng rộng rãi trong phần mềm doanh nghiệp, việc học nó vẫn là một khoản đầu tư thiết thực. Khi bạn đã thành thạo việc xây dựng các ứng dụng này, bạn nên thực hành những thao tác phổ biến nhất. Câu hỏi phỏng vấn WPF để củng cố các khái niệm như XAML, liên kết dữ liệu và cây trực quan.









