WPF - Bài mở đầu: Tổng quan về WPF (Windows Presentation Foundation)

Chi tiết

WPF - Bài 1: Bố trí giao diện trong ứng dụng WPF

Chi tiết

Thực hành buổi 03 - Gán kết dữ liệu trong WPF

Chi tiết

XAML (eXtensible Application Markup Language) là một ngôn ngữ  đánh dấu với cú pháp tương tự XML dùng để tạo các đối tượng .Net trong các ứng dụng WPF, Silverlight và WF. Mặc dù đây là những mảng đề tài lớn nhưng nếu bạn đã biết đến XML, sẽ không khó để làm quen với XAML. Trong bài này tôi sẽ trình bày các đặc điểm và chức năng cơ bản của XAML để giúp bạn tiếp cận với WPF từ mức đơn giản nhất. Nền tảng mà tôi sử dụng là .Net framework 4 cùng với C# 2010.

Chi tiết

[…] XAML (eXtensible Application Markup Language) là một ngôn ngữ  đánh dấu với cú pháp tương tự XML dùng để tạo các đối tượng .Net trong các ứng dụng WPF, Silverlight và WF. Mặc dù đây là những mảng đề tài lớn nhưng nếu bạn đã biết đến XML, sẽ không khó để làm quen với XAML. Trong bài này tôi sẽ trình bày các đặc điểm và chức năng cơ bản của XAML để giúp bạn tiếp cận với WPF từ mức đơn giản nhất. Nền tảng mà tôi sử dụng là .Net framework 4 cùng với C# 2010.[...]

Chi tiết

Cách bố trí (Layout) là một vấn đề quan trọng và không thể thiếu trong việc thiết kế giao diện. WPF hỗ trợ nhiều kiểu layout tương ứng với mỗi control được gọi là layout container/layout control. Các layout container này được kế thừa từ lớp System.Windows.Controls.Panel và có cách sắp xếp và bố trí các control bên trong nó khác nhau.

Chi tiết

Là một layout control linh hoạt và hiệu quả nhất, Grid bố trí các control bên trong nó theo dạng bảng gồm các dòng và cột. Ngoài ra, bạn có thể thay đổi kích thước của dòng và cột trong quá trình thực thi với GridSplitter.

Chi tiết

Khác với các property mà bạn thường sử dụng trong .NET (CLR Property), WPF sử dụng một kiểu property mới được gọi là Dependency Property. Trong bài tôi sẽ giới thiệu các kiến thức cơ bản về Dependency Property và cách tạo một Dependency Property đơn giản.

Chi tiết

Trong bài trước tôi đã hướng dẫn cách tạo một Dependency Property đơn giản, tiếp theo chủ đề này là việc tạo Read-Only và Attached Dependency Property. Đây là hai loại Dependency Property được sử dụng cho các mục đích khác nhau, cách tạo chúng cũng có một vài điểm khác biệt so với Dependency Property thông thường.

Chi tiết

Một giao diện người dùng trong WPF có thể được tổ chức thành một cấu trúc cây để thể hiện mối quan hệ giữa các thành phần tạo nên chúng. Cấu trúc cây này được tổ chức tương tự như một tài liệu XAML mà bạn thiết kế và được gọi là Element Tree. Element Tree được phân ra thành Logical Tree và Visual Tree.

Chi tiết

Routed Event là một kiểu event mới với cách thức hoạt động hiệu quả hơn so với .NET event thông thường. Chúng có thể được lắng nghe bởi nhiều thành phần và thay đổi hướng lan truyền sự kiện lên hoặc xuống trên element tree.

Chi tiết

Data Binding là kĩ thuật dùng để tạo gắn kết giữa phần giao diện (UI) và dữ liệu thông qua phần business logic. Nhờ Data Binding, UI có thể tự động cập nhật lại để hiển thị các thay đổi trong dữ liệu.Ngoài ra, Data Binding trong WPF còn hỗ trợ các chiều khác nhau, nghĩa là các thay đổi có thể cập nhật từ UI vào dữ liệu.

Chi tiết

Có những trường hợp bạn cần thực hiện một binding phức tạp như chuyển đổi, tính toán, tìm kiếm từ giá trị này sang giá trị khác. Để làm được điều này, bạn cần tạo một lớp converter hiện thực interface IValueConverter và gán thể hiện của lớp này cho property Binding.Converter.

Chi tiết

Một collection cũng có thể được coi là một đối tượng, tuy nhiên việc binding loại dữ liệu này yêu cầu những chức năng như sắp xếp, lọc, gom nhóm,… Trong bài này, tôi sẽ giới thiệu về Collection View và sử dụng để thực hiện các chức năng này trên dữ liệu được binding vào ListBox.

Chi tiết

Data Template là kĩ thuật dùng để tạo ra một khuôn mẫu giao diện để hiển thị một phần tử dữ liệu trong collection. Mỗi phần tử dữ liệu có thể là một kiểu dữ liệu phức tạp và không phải bạn lúc nào cũng muốn dùng ToString() để hiển thị nó theo dạng chuỗi đơn giản. Thay vào đó, bạn có thể hiển thị nó theo một cách riêng, trên nhiều control, với định dạng khác nhau,…

Chi tiết

Một master-detail binding sử dụng nhiều control để hiển thị dữ liệu theo quan hệt một-nhiều(như Category > Product, Book > Chapter, …). Trong ví dụ này, tôi sẽ minh họa cách tạo mô hình binding này với hai control hiển thị dữ liệu kiểu collection là Combo Box và ListBox.

Chi tiết

Các dữ liệu dạng phân cấp có thể được hiển thị trên các control HeaderedItemsControl như TreeViewItem hay MenuItem. Và để sử dụng Data Template cho các các kiểu dữ liệu này, bạn cần sử dụng lớp HierarchicalDataTemplate.

Chi tiết

Nhiều trường hợp bạn cần binding dữ liệu từ nhiều nguồn khác nhau, ví dụ như tính giá trị trung bình từ nhiều control và hiển thị trên một TextBox. Trường hợp này, bạn cần dùng đến lớp MultiBinding đồng thời kết hợp với IMultiValueConverter để chuyển đổi dữ liệu thành dạng cần thiết.

Chi tiết

Style là một kĩ thuật để định dạng cách hiển thị, xử lý cho một/nhiều control bằng cách gán giá trị cho các property, event. Sử dụng Style giúp cho việc thiết kế giao diện trở nên dễ dàng và linh hoạt hơn nhiều so với Windows Forms.

Chi tiết

Curious to see the styles for any WPF framework control?  If so, take a look at this simple and free utility call StyleSnooper.Originally posted by Lester Lobo and revamped by Ælij.

Chi tiết

Không giống như Data Template được sử dụng cho các dữ liệu không hiển thị (non-visual), Control Template được sử dụng để tạo nên cấu trúc của các control. Mỗi control đều có một template mặc định. Cấu trúc này bao gồm các thành phần thuộc visual tree nhờ đó tạo ra giao diện cũng như những chức năng mới của control.

Chi tiết

Để hiển thị lỗi khi người dùng nhập dữ liệu sai, WPF cung cấp lớp ValidationRule để hight light control chứa dữ liệu không hợp lệ. Tính năng này tương tự như ErrorProvider trong Windows Forms và các control Validator trong ASP.NET.

Chi tiết

Thay vì sử dụng ExceptionValidationRule để bắt các ngoại lệ, bạn có thể tự tạo ra các ValidationRule cho từng mục đích riêng như kiểm tra giá trị nhập trong khoảng cho phép, kiểm tra chuỗi dựa vào regular expression,…

Chi tiết

Resource Dictionary là một 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 và có thể được truy xuất thông qua định danh của chúng bằng cách dùng chỉ thị x:key. Đây là một giải pháp để tách riêng các resource như template, style,… ra khỏi tài liệu XAML của bạn.

Chi tiết

Routed Command là cách được dùng để gắn kết một command cho một control nào đó như các phần tử trên menu hoặc toolbar mà không cần phải viết mã xử lý cho chúng. Không chỉ cung cấp sẵn hầu hết các command mà ứng dụng cần đến, bạn còn có thể thiết lập các phím tắt để kích hoạt và thay đổi cách thức mà command hoạt động.

Chi tiết

Sử dụng tính năng binding trong WPF, bạn có thể tạo được các ứng dụng đa ngôn ngữ rất đơn giản với sự trợ giúp của ResourceDictionary. Lợi ích của phương pháp này là bạn không cần phải viết code để thay đổi văn bản hiển thị của các control và việc thiết kế giao diện cũng không có gì khác biệt.

Chi tiết

Lên trên đầu