WPF筆記(一)
WPF 作為 .NET Framework 類型的一個子集存在,這些類型大多位于 System.Windows 命名空間。如果您以前已使用 .NET Framework 通過諸如 ASP.NET 和 Windows 窗體 之類的托管技術生成應用程序,那么您應該熟悉 WPF 的基本編程體驗;您可以使用您最喜愛的 .NET Framework 編程語言(如 C# 或 Visual Basic)實例化類、設置屬性、調用方法以及處理事件。
XAML 是一種基于 XML 的標記語言,用于以聲明的方式實現應用程序的外觀。它通常用于創建窗口、對話框、頁面和用戶控件,并用控件、形狀和圖形填充它們。
下面的示例使用 XAML 實現一個窗口的外觀,該窗口中只包含一個按鈕。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="Window with Button"
Width="250" Height="100">
<!-- Add button to window -->
<Button Name="button">Click Me!</Button>
</Window>
具體而言,此 XAML 分別使用 Window 和Button 元素定義一個窗口和一個按鈕。每個元素均配置了屬性,如 Window 元素的 Title 屬性,用于指定窗口的標題欄文本。在運行時,WPF 將標記中定義的元素和屬性轉換為 WPF 類的實例。
下圖演示了 XAML 在上一示例中定義的 用戶界面 (UI)。
代碼隱藏
應用程序的主要行為是實現響應用戶交互的功能,包括處理事件(如,單擊菜單、工具欄或按鈕),并調用業務邏輯和數據訪問邏輯作為響應。在 WPF 中,此行為通常在與標記關聯的代碼中實現。此類代碼稱為“代碼隱藏”。下面的示例演示上一示例中的代碼隱藏和更新的標記。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SDKSample.AWindow"
Title="Window with Button"
Width="250" Height="100">
<!-- Add button to window -->
<Button Name="button" Click="button_Click">Click Me!</Button>
</Window>
using System.Windows; // Window, RoutedEventArgs, MessageBox
namespace SDKSample
{
public partial class AWindow : Window
{
public AWindow()
{
// InitializeComponent call is required to merge the UI
// that is defined in markup with this class, including
// setting properties and registering event handlers
InitializeComponent();
}
void button_Click(object sender, RoutedEventArgs e)
{
// Show message box when button is clicked
MessageBox.Show("Hello, Windows Presentation Foundation!");
}
}
}
在此示例中,代碼隱藏實現一個從 Window 類派生的類。x:Class 屬性用于將標記與代碼隱藏類相關聯。InitializeComponent 是從代碼隱藏類的構造函數中調用的,用于將標記中定義的 UI 與代碼隱藏類相合并。((生成應用程序時將為您生成 InitializeComponent,因此您不需要手動實現它。) x:Class 和 InitializeComponent 的組合確保您的實現無論何時創建都能得到正確的初始化。代碼隱藏類還為按鈕的 Click 事件實現了一個事件處理程序。當單擊該按鈕時,事件處理程序將通過調用 MessageBox..::.Show 方法顯示一個消息框。