This article is currently in the process of being translated into Vietnamese (~99% done).
The Window
Khi tạo một ứng dụng WPF, điều đầu tiên bạn sẽ gặp là lớp Window. Nó phục vụ như là gốc của một window và cung cấp cho bạn với các tiêu chuẩn border, title bar và maximize, minimize và các close button. Một WPF window là một sự kết hợp của một file XAML (.xaml), trong đó phần tử <Window> là gốc, và một file Code-behind (.cs). Nếu bạn đang sử dụng Visual Studio (Express) và bạn tạo một ứng dụng WPF, nó sẽ tạo một window mặc định cho bạn, nó sẽ như thế này:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
</Grid>
</Window>
Thuộc tính x:class khai báo cho file XAML biết lớp nào được sử dụng, trong trường hợp này là Window1, lớp mà Visual Studio cũng đã tạo cho chúng ta. Bạn sẽ tìm nó trong project tree trong VS, như là một nút con trong file XAML. Mặc định, nó như thế này:
using System;
using System.Windows;
using System.Windows.Controls;
//…more using statements
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
}
}
Như bạn thấy, lớp Window1 được định nghĩa là "partial", bởi vì nó đang kết hợp với file XAML khi thực thi để tạo ra cửa sổ hoàn chỉnh cho bạn. Đây chính là điều mà hàm InitializeComponent() làm, chính vì vậy ta phải luôn gọi nó để cửa sổ với đầy đủ tính năng có thể được tải lên và hoạt động.
Khi chúng ta trở về file XAML, bạn hãy chú ý tới các thuộc tính thú vị trong thẻ (element) Window như là Title, Width và Height. Title định nghĩa tựa đề hiển thị trên cửa sổ window ở thanh tựa đề (title bar). Ngoài ra còn có nhiều định nghĩa namespace khác mà chúng ta sẽ nói trong phần XAML.
Chúng ta hãy để ý rằng Visual Studio đã tạo sẵn Grid control bên trong thẻ Window. Grid là một trong những loại vùng chứa nội dung (panel) trong WPF và nó có thể là bất kì loại vùng chứa (panel) hay điều khiển (control) nào. Thẻ Window chỉ có thể chứa duy nhất một phần tử con nên vùng chứa (panel) là lựa chọn tốt nhất cho phần tử con của thẻ Window này bởi vì vùng chứa (panel) có thể chứa một hay nhiều phần tử con khác. Ở các bài hướng dẫn sau, chúng ta sẽ có cái nhìn cận cảnh về các loại vùng chứa mà chúng ta có thể sử dụng bởi vì chúng rất quan trọng trong việc phát triển với WPF.
Các thuộc tính quan trọng của thẻ Window
Lớp Wpf Window có nhiều thuộc tính thú vị mà bạn có thể chỉnh sửa giao diện và hoạt động cho ứng dụng window của bạn. Sau đây là một danh sách ngắn gọn các thuộc tính đó:
Icon - Cho phép chúng ta thay đổi biểu tượng cho cửa sổ window. Biểu tượng này dễ dàng thấy được ở góc trên bên trái, bên trái tựa đề window.
ResizeMode - Thuộc tính này định nghĩa cho phép người dung thay đổi kích thước cửa sổ window hay không. Giá trị mặc định là CanResize, nghĩa là người dùng có thể thay đổi kích thước cửa sổ bằng các nút maximize hoặc minimize hoặc kéo dãn kích thước ở các cạnh cửa sổ. Giá trị CanMinimize cho phép người dùng có thể thu nhỏ cửa sổ window nhưng không thể phóng to bằng nút maximize hoặc kéo dãn to ở cạnh cửa sổ. NoResize không cho phép người dùng thay đổi kích thước cửa sổ chương trình, các nút maximize và minimize sẽ bị xóa bỏ không xuất hiện và không thể kéo dãn kích thước ở các cạnh cửa sổ window.
ShowInTaskbar - Giá trị mặc định là true. Nếu bạn đặt giá trị là false, cửa sổ window của bạn sẽ không hiển thị trên thanh taskbar của Windows. Thuộc tính này hữu ích cho các cửa sổ không quan trọng hoặc các ứng dụng nên thu nhỏ thành khay (tray).
SizeToContent - Điều khiển việc nên điều chỉnh kích thước cửa sổ window dựa trên nội dung hay không? Giá trị mặc định là Manual, nghĩa là không tự động điều chỉnh kích thước. Các giá trị khác như Width, Height hoặc WidthAndHeight. Các giá trị này sẽ tự động điều chỉnh kích thước cửa sổ window theo chiều dọc, ngang hoặc cả hai tùy theo giá trị đã chọn.
Topmost - Mặc định là giá trị false. Nếu bạn đặt giá trị là true, cửa sổ window này sẽ luôn ở trên cùng, luôn nằm đè lên tất cả các cửa sổ khác, trừ khi bạn thu nhỏ (minimized) nó. Thuộc tính này chỉ hữu ích trong một số trường hợp đặc biệt.
WindowStartupLocation - Điều khiển vị trí ban đầu của cửa số window. Giá trị mặc định là Manual, nghĩa là cửa sổ khi chạy sẽ ở vị trí dựa theo tọa độ giá trị của thuộc tính Top và Left của cửa sổ bạn tạo. Các giá trị khác như CenterOwner nghĩa là cửa sổ window sẽ ở vị trí ở giữa cửa sổ hoạt động của người sở hữu hay giá trị CenterScreen nghĩa là vị trí ở giữa màn hình.
WindowState - Điều khiển trạng thái kích thước ban đầu của cửa sổ window khi bạn mở nó. Nó có thể là một trong các giá trị Normal, Maximized hoặc Minimized. Giá trị mặc định là Normal. Nếu bạn muốn cửa sổ window chạy với trạng thái kích thước lớn nhất hoặc ngược lại thì hãy chỉnh sang Maximized hoặc Minimized tương ứng.
Số lượng các thuộc tính nhiều hơn bạn nghĩ. Hãy xem lại các thuộc tính đó và xem chương tiếp theo để biết nhiều hơn.