WPF笔记(一)

14年前

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