TOC

This article has been localized into Vietnamese by the community.

Một ứng dụng WPF:

Làm việc với App.xaml

App.xaml là nơi công bố điểm xuất phát chương trình của bạn. Visual Studio sẽ tự động tạo nó khi bạn bắt đầu một chương trình WPF mới, bao gồm cả một tệp Code-behind được đặt tên là App.xaml.cs. Hai tệp này hoạt động giống như trường hợp của một cửa sổ (Window), cả 2 tệp đều là partial class, cùng làm việc để tạo giao diện (XAML) và Code-behind.

App.xaml.cs mở rộng class Application, là class chính của một chương trình WPF. .NET sẽ đi đến class này đầu tiên để lấy hướng dẫn và sẽ khởi tạo cửa sổ (Window) hoăc trang (Page) từ đây. Đây cũng là nơi để đăng ký các sự kiện quan trọng của chương trình, như khởi động chương trình, các ngoại lệ không được khai báo v...v. Chi tiết về điều này sẽ được nói vào các chương sau.

Một trong những nét được sử dụng thường xuyên nhất của tệp App.xaml là định nghĩa tài nguyên chung để có thể sử dụng hoặc truy cập từ mọi nơi trong chương trình, ví dụ như các định dạng chung. Chi tiết về tài nguyên chung sẽ được đề cập ở các chương sau.

Cấu tạo của tệp App.xaml

Khi khởi tạo một chương trình mới, tệp App.xaml mới được tự động tạo sẽ có dạng như sau:

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

    </Application.Resources>
</Application>

Điểm đáng chú ý nhất ở đây là thuộc tính StartupUri. Thực chất thuộc tính này quyết định khởi động cửa sổ hoặc trang nào khi chương trình được bắt đầu. Trong trường hợp này, MainWindow,xaml sẽ được khởi động, nhưng nếu bạn muốn sử dụng một cửa sổ khác là điểm bắt đầu, bạn có thể dễ dàng thay thế nội dung thuộc tính này.

Trong một số trường hợp, bạn muốn có thêm tính năng để điều khiển cửa sổ đầu tiên hiện ra như thế nào và khi nào. Khi đó, bạn có thể xóa thuộc tính và nội dung của StartupUri thay vào đó khai báo chúng ở Code-behind. Điều nay được miêu tả ở các ví dụ dưới đây.

Cấu tạo của tệp App.xaml.cs

Tệp App.xaml.cs tương ứng được tạo cho một dự án mới sẽ có dạng như sau:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

	}
}

Tệp class này mở rộng class Application, cho phép chúng ta làm nhiều thứ tại tầng quản lý Application. Chẳng hạn, bạn có thể đăng ký đến sự kiện Startup, nơi bạn có thể tự tạo cửa sổ bắt đầu.

Đậy là một ví dụ:

<Application x:Class="WpfTutorialSamples.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
			 Startup="Application_Startup">
    <Application.Resources></Application.Resources>
</Application>

Để ý thấy StartupUri đã được thay thế với đăng ký tới sự kiện Startup (cách đăng ký tới các sự kiện qua tệp XAML sẽ được giải thích tại một chương khác). Trong Code-Behind, bạn có thể sự dụng các sự kiện như sau:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

		private void Application_Startup(object sender, StartupEventArgs e)
		{
			// Create the startup window
			MainWindow wnd = new MainWindow();
			// Do stuff here, e.g. to the window
			wnd.Title = "Something else";
			// Show the window
			wnd.Show();
		}
	}
}

Điểm thú vị ở ví dụ này là, so với việc chỉ sử dụng thuộc tính StartupUri, chúng ta có thể điều khiển cửa sổ khởi tạo trước khi thể hiện nó. Ở trường hợp này, chúng ta đã thay thế tên tiêu đề của chương trình, mặc dù không là gì đặc biệt, nhưng chúng ta cũng có thể đăng ký các sự kiện khác hay trình diện một màn hình quảng cáo. Khi bạn có tất cả các quyền điều khiển, có rất nhiều thứ bạn có thể làm với chúng. Chúng ta sẽ tìm hiểu thêm về một số điều khiển này trong các chương tiếp theo.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!