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 方法显示一个消息框。