PandHedge

UWP

2025-09-13
PandHedge
C#
 

UWP

创建和自定义窗体| Microsoft Learn

表单中有哪些内容?

需要用各种 XAML 控件填充表单。 你可能熟悉这些内容,但如果需要刷新,可以随意阅读。 具体而言,你需要允许用户输入文本或从值列表中选择的控件。 这是可以添加的选项的基本列表 - 你不需要阅读有关它们的所有内容,只是足以让你了解它们的外观及其工作原理。

你可能还需要添加 按钮,以便用户可以保存或取消。

设置布局中的控件格式

你知道如何排列布局面板并具有要添加的项目,但应如何设置其格式? 窗体 页面具有一些特定的设计指南。 阅读有关表单类型 和 布局 的部分,以获取有用的建议。 我们将很快讨论辅助功能和相对布局。

使您的布局具有响应式设计

用户可能会在具有不同屏幕宽度的各种设备上查看 UI。 为了确保无论屏幕如何,他们都有良好的体验,应使用 响应式设计。 阅读该页,了解设计理念方面的良好建议,以便在继续作时记住这一点。

有用的 API
API(应用程序编程接口) DESCRIPTIONDESCRIPTION
适用于表单的控件适用于表单的控件 用于创建表单的有用输入控件列表,以及有关如何使用表单的基本指南。用于创建表单的有用输入控件列表,以及有关如何使用表单的基本指南。
网格 用于排列多行和多列布局中的元素的面板。
RelativePanel 用于将项目相对于其他元素和面板边界进行排列的面板。
堆叠面板(StackPanel) 用于将元素排列为单个水平线或垂直线的面板。
VisualState 允许在 UI 元素处于特定状态时设置 UI 元素的外观。
事件概述 有关添加和组织事件以处理UI操作的详细信息。
表单 有关创建表单的总体指南。
布局面板 概述布局面板的类型以及使用位置。
列表/详细信息模式 可以围绕一个或多个表单实现的设计模式。
NavigationView (导航视图) 可以包含一个或多个窗体的控件。
响应式设计 大规模响应式设计原则概述。
使用 XAML 进行响应式布局 有关视觉状态和其他响应式设计实现的特定信息。
响应式设计的 屏幕大小 关于应将响应式布局限定到哪些屏幕大小的指南。事件概述
有用的代码示例
代码示例 DESCRIPTION
客户订单数据库 亲眼见证多页企业示例中布局和表单的实际应用。
XAML 控件库 查看一系列 XAML 控件及其实现方式。
其他代码示例 在类别下拉列表中选择 “控件”、“布局”和“文本 ”以查看相关的代码示例。

窗体

表单是一组控件,用于收集和提交来自用户的数据。 表单通常用于设置页面、调查、创建帐户,等等。

窗体类型

考虑用户输入的提交和显示方式时,可以使用两种类型的表单:

1. 即时更新

如果希望用户立即看到更改表单中的值会有什么样的结果,请使用即时更新表单。

2. 使用按钮提交

另一类型的表单允许用户通过单击某个按钮来选择何时提交数据。

此类表单允许用户灵活进行响应。 通常情况下,此类表单包含更多自由的表单输入字段,因此会收到更多种类的响应。 若要确保提交后的用户输入有效且数据格式正常,请考虑以下建议:

  • 使用正确的控件,确保无法提交无效的信息(也就是说,对日历日期要使用 CalendarDatePicker 而不是 TextBox)。 若要详细了解如何在表单中选择适当的输入控件,请参阅后面的“输入控件”部分。
  • 使用 TextBox 控件时,请使用 PlaceholderText 属性向用户提示所需的输入格式。
  • 使用 InputScope 属性指出预期的控件输入,为用户提供适当的屏幕键盘。
  • 在标签上将必需的输入标记为星号 *。
  • 在用户填完所有必需信息之前,禁用提交按钮。
  • 如果提交后存在无效数据,请对包含无效输入的控件使用突出显示的字段或边框进行标记,并要求用户重新提交表单。
  • 对于其他错误(例如网络连接失败),请务必向用户显示相应的错误消息。

Layout

若要简化用户体验,确保用户能够进行正确的输入,请在设计表单的布局时考虑以下建议:

标签

标签应该左对齐并放置在输入控件上方。 许多控件都有用于显示标签的内置 Header 属性。 对于没有 Header 属性的控件,或要为多组控件添加标签,你可以改用 TextBlock

针对辅助功能进行设计时,请将所有的单个控件和控件组进行标记,使用户和屏幕阅读器都能清楚地看到。

对于字体样式,请使用默认的 Windows 类型渐变。 将 TitleTextBlockStyle 用于页面标题,将 SubtitleTextBlockStyle 用于组标题,将 BodyTextBlockStyle 用于控件标签。

间距

若要在视觉上将控件组彼此分开,请使用对齐、边距和填充。 单个输入控件的高度为 80px,应该隔开 24px 的距离。 输入控件组应该隔开 48px 的距离。

创建列可以减少表单中不必要的空白,尤其是在屏幕大小较大的情况下。 但是,若要创建多列表单,则列数应该取决于页面上的输入控件数以及应用窗口的屏幕大小。 可以考虑为表单创建多个页面,而不是让屏幕充斥各种输入控件。

响应性强的布局

表单应该在屏幕或窗口大小变化时重设大小,这样用户就不会忽略任何输入字段。 有关详细信息,请参阅响应式设计技术。 例如,可能需要让表单的特定区域始终位于视图中,不管屏幕大小如何变化。

制表位

用户可以使用键盘,通过制表位来导航控件。 默认情况下,控件的 Tab 键顺序反映了其在 XAML 中的创建顺序。 若要覆盖默认的行为,请更改控件的 IsTabStopTabIndex 属性。

输入控件

输入控件是 UI 元素,允许用户将信息输入表单中。 下面列出了一些可以添加到表单中的常用控件,并介绍了何时使用它们。

文本输入
控制 使用 示例
TextBox 捕获一个或多个文本行 名称、自由表单响应或反馈
PasswordBox 通过隐藏字符来收集专用数据 密码、社会安全号码 (SSN)、PIN、信用卡信息
AutoSuggestBox 当用户键入时,从相应的一组数据中选择一系列建议显示给用户 数据库搜索、mail to: 行、以前的查询
RichEditBox 使用格式化文本、超链接和图像编辑文本文件 在应用中上传文件,然后进行预览和编辑
选择
控制 使用 示例
CheckBox 选择或取消选择一个或多个操作项 同意条款和条件,添加可选项,选择所有适用的内容
RadioButton 从两个或多个选项中选择一个选项 选取类型、送货方式等
ToggleSwitch 从两个互斥选项中选择一个 打开/关闭

···注意:如果有五个或更多选择项,请使用列表控件。···

列表
控制 使用 示例
ComboBox 最初处于紧凑状态,可展开以显示可选择项的列表 从项(例如州或国家/地区)的长列表中进行选择
ListView 对项进行分类并为之分配组标头、拖放项、规划内容以及重新对项进行排序 分级选项
GridView 排列和浏览基于图像的集合 选取照片、颜色、显示主题
数字输入
控制 使用 示例
滑块 从一系列相邻的数字值中选择一个数字 百分比、音量、播放速度
评级 使用星号评级 客户反馈
日期和时间
控制 使用
CalendarView 从始终可见的日历中选取一个日期或日期范围
CalendarDatePicker 从上下文日历中选取一个日期
DatePicker 在上下文信息不重要时选取一个本地化的日期
TimePicker 选取一个时间值
其他控制

如需 UWP 控件的完整列表,请参阅按功能排序的控件索引

如需更多复杂的自定义 UI 控件,请查看 TelerikSyncFusionDevExpressInfragisticsComponentOneActiPro 等公司提供的资源。

在列表中显示客户

在 UI 中显示和操作真实数据对于许多应用程序的功能至关重要。 本文将向你介绍需要了解的内容,以便在列表中显示客户对象集合。

这不是教程。 如果需要,请参阅 我们的数据绑定教程,该教程将提供分步引导式体验。

我们将首先快速讨论数据绑定,即什么是数据绑定以及它如何工作。 然后,我们将向 UI 添加 ListView ,添加数据绑定,并使用其他功能自定义数据绑定。

数据绑定是在其 UI 中显示应用数据的一种方法。 这样就可以在应用中 分离关注点,使 UI 与其他代码分开。 这会创建一个更简洁的概念模型,更易于阅读和维护。

每个数据绑定都有两个部分:

  • 提供要绑定的数据的源。
  • 显示数据的 UI 中的目标。

若要实现数据绑定,需要向源添加代码,以便向绑定提供数据。 还需要向 XAML 添加两个标记扩展之一来指定数据源属性。 下面是两者之间的主要区别:

  • x:Bind 是强类型化的,并在编译时生成代码以提高性能。 x:Bind 默认为一次性绑定,这种绑定针对只读且不更改的数据的快速显示进行了优化。
  • 绑定 在运行时处于弱类型化和组装状态。 这会导致性能低于使用 x:Bind 时。 几乎所有情况下,都应使用 x:Bind 而不是 Binding。 但是,你可能在较旧的代码中遇到它。 绑定默认为单向数据传输,这对来源可变的只读数据进行了优化。
数据绑定示例

创建数据源

首先,需要一个类来表示客户数据。 为了给您提供参考点,我们将在这个简单示例中演示该过程。

public class Customer
{
    public string Name { get; set; }
}

创建列表

在显示任何客户之前,需要创建列表来保存这些客户。 列表视图是一个基本 XAML 控件,非常适合此任务。 ListView 当前需要页面上的位置,并且很快需要其 ItemSource 属性的值。

<ListView ItemsSource=""
    HorizontalAlignment="Center"
    VerticalAlignment="Center"/>

将数据绑定到列表

现在,你已制作了一个用于保存绑定的基本 UI,需要配置源以提供它们。 下面是如何完成此操作的示例:

C#

public sealed partial class MainPage : Page
{
    public ObservableCollection<Customer> Customers { get; }
        = new ObservableCollection<Customer>();

    public MainPage()
    {
        this.InitializeComponent();
          // Add some customers
        this.Customers.Add(new Customer() { Name = "NAME1"});
        this.Customers.Add(new Customer() { Name = "NAME2"});
        this.Customers.Add(new Customer() { Name = "NAME3"});
    }
}

XAML

<ListView ItemsSource="{x:Bind Customers}"
    HorizontalAlignment="Center"
    VerticalAlignment="Center">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:Customer">
            <TextBlock Text="{x:Bind Name}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

上一篇 Selenium

下一篇 XAML

Comments

Content