摘要:使用Microsoft Visual Studio 2015 和 Windows 10 创建你的第一个Windows通用应用(UWP)。

本教程指导你如何使用 Extensible Application Markup Language (XAML) 和 C# 创建一个面向 Windows 10 上通用 Windows 平台 (UWP) 的简单“Hello, world”应用。 借助 Microsoft Visual Studio 中的单个项目,你可以生成可在任何 Windows 10 设备上运行的应用。这里我们侧重于创建可在桌面和移动设备上正常运行的应用。

注意:本教程适用于 Microsoft Visual Studio 2015 和 Windows 10。 它在早期版本中无法正常运行。


此处你将了解如何:

•创建面向 Windows 10 和 UWP 的新 Visual Studio 项目。
•将 XAML 内容添加到起始页。
•处理触控、笔以及鼠标输入。
•在 Visual Studio 中,在本地桌面上和在手机仿真器中运行该项目。
•使 UI 适应不同的屏幕大小。


让我们开始吧

第一步:在 Visual Studio 中创建新项目

启动 Visual Studio 2015。
将出现 Visual Studio 2015 起始页。 (从现在开始,我们将 Visual Studio 2015 简称为 Visual Studio 。)

在“文件”菜单上,依次选择“新建”>“项目”。

出现“新建项目”对话框。可以在对话框的左侧窗格中选择要显示模板的类型。

在左侧窗格中,依次展开“已安装”>“模板”>“Visual C#”>“Windows”,然后选取“通用”模板组。对话框的中心窗格会显示一系列用于通用 Windows 平台 (UWP) 应用的项目模板。

在中心窗格中,选择“空白应用(通用 Windows)”模板。
“空白应用”模板会创建一个最基本的 UWP 应用,该应用可以编译和运行,但不包含任何用户界面控件或数据。本教程将指导你向该应用添加控件。

在“名称”文本框中,键入“HelloWorld”。
单击“确定”以创建项目。

Visual Studio 会创建项目并在“解决方案资源管理器”中显示该项目。

尽管“空白应用”是最基本的模板,但它仍然包含很多文件:

清单文件 (Package.appxmanifest),介绍应用(其名称、描述、磁贴、起始页等等)并列出应用包含的文件。
用于在“开始”菜单中显示的一组徽标图像(Assets/Square150x150Logo.scale-200.png、Assets/Square44x44Logo.scale-200.png 和 Assets/Wide310x150Logo.scale-200.png)。
表示应用位于 Windows 应用商店的图像 (Assets/StoreLogo.png)。
用于在应用启动时显示的初始屏幕 (Assets/SplashScreen.scale-200.png)。
应用的 XAML 和代码文件(App.xaml 和 App.xaml.cs)。
起始页 (MainPage.xaml) 和附带的代码文件 (MainPage.xaml.cs),这些文件在应用启动时运行。

这些文件是使用 C# 的所有 UWP App 必不可少的文件。在 Visual Studio 中创建的每一个项目都包含这些文件。

第二步:修改起始页

文件中包含哪些内容?

若要查看和编辑项目中的文件,请双击“解决方案资源管理器”中的文件。默认情况下,你可以像展开文件夹一样展开 XAML 文件以查看其相关联的代码文件。 XAML 文件在拆分视图中打开,可同时显示设计界面和 XAML 编辑器。

在本教程中,你可以只使用少量以前列出的文件:App.xaml、MainPage.xaml 和 MainPage.xaml.cs。

App.xaml 和 App.xaml.cs

App.xaml 是你声明应用中所使用的资源的位置。App.xaml.cs 是 App.xaml 的代码隐藏文件。代码隐藏是与 XAML 页的部分类结合的代码。XAML 与代码隐藏一同组成完整的类。App.xaml.cs 为应用的入口点。与所有代码隐藏页面一样,它包含一个调用 InitializeComponent 方法的构造函数。你不必编写 InitializeComponent 方法。该方法由 Visual Studio 生成,其主要作用是初始化在 XAML 文件中声明的元素。App.xaml.cs 还包含一些处理应用的激活和挂起的方法。

MainPage.xaml

在 MainPage.xaml 中,为应用定义 UI。你可以直接使用 XAML 标记添加元素,也可以使用 Visual Studio 提供的设计工具。 MainPage.xaml.cs 是 MainPage.xaml 的代码隐藏页面。你可以在其中添加应用逻辑和事件处理程序。

这两个文件一起定义称为 MainPage 的新类,该类继承自 HelloWorld 命名空间中的 Page。

MainPage.xaml

<Page
    x:Class="HelloWorld.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:HelloWorld"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"></Grid>
</Page>

MainPage.xaml.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;//“空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 上有介绍namespace HelloWorld
{/// <summary>/// 可用于自身或导航至 Frame 内部的空白页。/// </summary>public sealed partial class MainPage : Page{public MainPage(){this.InitializeComponent();}}
}

修改起始页
现在,让我们来向应用添加一些内容。

修改起始页的步骤

在“解决方案资源管理器”中双击 MainPage.xaml 以将其打开。

在 XAML 编辑器中,为 UI 添加控件。

<StackPanel x:Name="contentPanel" Margin="8,32,0,0"><TextBlock Text="Hello, world!" Margin="0,0,0,40"/><TextBlock Text="What's your name?"/><StackPanel x:Name="inputPanel" Orientation="Horizontal" Margin="0,20,0,20"><TextBox x:Name="nameInput" Width="280" HorizontalAlignment="Left"/><Button x:Name="inputButton" Content="Say &quot;Hello&quot;"/></StackPanel><TextBlock x:Name="greetingOutput"/>
</StackPanel>

在根 Grid 中,添加此 XAML。它包含一个标题为 TextBlock 的 StackPanel、一个询问用户名称的 TextBlock、一个用于接受用户名称的 TextBox 元素、一个 Button,以及另一个用于显示问候的 TextBlock。其中一些控件有名称,因此稍后你可以在代码中引用它们。

第三步:启动应用

至此,你已创建了一个非常简单的应用。现在是构建、部署和启动应用并查看其外观的好时机。你可以在本地计算机上、模拟器或仿真器中或者在远程设备上调试应用。下面是 Visual Studio 中的目标设备菜单。

在桌面设备上启动应用

默认情况下,应用在本地计算机上运行。目标设备菜单提供用于在桌面设备系列中的设备上调试应用的多个选项。

在本地计算机上开始调试
在“标准”工具栏上的目标设备菜单 () 中,确保已选中“本地计算机”。(它是默认选择。)

2.单击工具栏上的“开始调试”按钮 ()。

–或–

在“调试”菜单中,单击“开始调试”。

–或–

按 F5。

应用将在窗口中打开,并且将首先显示默认初始屏幕。

初始屏幕由一个图像 (SplashScreen.png) 和背景色(在应用的清单文件中指定)定义。

初始屏幕会消失,然后会出现你的应用。它的外观如下所示。

按 Windows 键以打开“开始”菜单,然后显示所有应用。请注意,本地部署应用会将其磁贴添加到“开始”菜单。若要再次运行该应用(不是在调试模式下),请在“开始”菜单中点击或单击其磁贴。

它还不会执行很多操作——,但祝贺你已构建了第一个 UWP App!

停止调试

单击工具栏上的“停止调试”按钮 ()。

–或–

在“调试”菜单中,单击“停止调试”。

–或–

关闭应用窗口。

在移动设备仿真器上启动该应用

你的应用可在任何 Windows 10 设备上运行,让我们看一下它在 Windows Phone 上的情况如何。

除了在桌面设备上执行调试的选项,Visual Studio 还提供用于在连接到计算机的物理移动设备上或移动设备仿真器上部署和调试应用的选项。你可以为带有不同内存和显示配置的设备在仿真器中进行选择。

最好在带有小型屏幕和有限内存的设备上测试应用,因此请使用“仿真器 10.0.10240.0 WVGA 4 英寸 512MB”选项。

在移动设备仿真器上开始调试
在“标准”工具栏上的目标设备菜单中,选取“仿真器 10.0.10240.0 WVGA 4 英寸 512MB”。

2.单击工具栏中的“开始调试”按钮。

–或–

在“调试”菜单中,单击“开始调试”。

–或–

按 F5。

Visual Studio 将启动选定的仿真器,然后部署和启动你的应用。在移动设备仿真器中,应用的外观如下所示。

你首先会注意到,在屏幕较小的移动设备上,该按钮被推送至屏幕之外。在本教程的后面部分中,你将了解如何使 UI 适应不同的屏幕大小,以使应用始终保持良好外观。

你可能还会注意到,你可以在 TextBox 中键入内容,但此时单击或点击 Button 不会起任何作用。在接下来的步骤中,你将为按钮的 Click事件创建事件处理程序,以显示个性化的问候。将事件处理程序代码添加到 MainPage.xaml.cs 文件。

第四步:创建事件处理程序

XAML 元素可以在出现某些事件时发送消息。这些事件消息为你提供了可以采取一些操作响应事件的机会。将用于响应事件的代码放在事件处理程序方法中。 多个应用中最常见事件之一为用户单击 Button

我们来为按钮的 Click事件创建事件处理程序。 事件处理程序会从 nameInput TextBox 控件获取用户名并使用该用户名向 greetingOutput TextBlock 输出问候。

使用用于触控、鼠标和笔输入的事件

你应处理什么事件?由于它们可以在各种设备上运行,请在设计 Windows 应用商店应用时牢记触摸输入。应用还必须能够处理来自鼠标或触笔的输入。幸运的是,诸如 ClickDoubleTapped 的事件与设备无关。如果你熟悉 Microsoft .NET 编程,则可以看到鼠标、触控和触笔输入的单独事件,如 MouseMoveTouchMoveStylusMove。在 Windows 应用商店应用中,这些单独的事件使用单个 PointerMoved 事件替换,该事件同样适用于触摸、鼠标以及触笔输入。

添加事件处理程序的步骤
在 XAML 或设计视图中,选择已添加到 MainPage.xaml 的 “Say Hello” Button。

在“属性”窗口中,单击“事件”按钮。

在事件列表的顶部查找 Click 事件。在事件的文本框中,键入处理 Click 事件的函数名称。对于本示例,请键入 “Button_Click”。

按 Enter。事件处理程序方法在代码编辑器中创建和打开,因此你可以添加要在事件发生时执行的代码。
在 XAML 编辑器中,更新 Button 的 XAML 以声明 Click 事件处理程序,如下所示。

<Button x:Name="inputButton" Content="Say &quot;Hello&quot;" Click="Button_Click"/>

向在代码隐藏页面中创建的事件处理程序添加代码。在事件处理程序中,从 nameInput TextBox 控件检索用户名并使用该用户名创建问候语。使用 greetingOutput TextBlock 显示相关结果。

private void Button_Click(object sender, RoutedEventArgs e)
{greetingOutput.Text = "Hello, " + nameInput.Text + "!";
}

在本地计算机上调试应用。当你在文本框中输入姓名并单击按钮后,应用会显示个性化问候。

第五步:使 UI 适应不同的窗口大小

现在我们将使 UI 适应不同的屏幕大小,以使其在移动设备上外观良好。若要执行此操作,添加 VisualStateManager 并设置应用于不同视觉状态的属性。

调整 UI 布局
在 XAML 编辑器中,在根 Grid 元素的开始标记后添加此 XAML 块。

<VisualStateManager.VisualStateGroups><VisualStateGroup><VisualState x:Name="wideState"><VisualState.StateTriggers><AdaptiveTrigger MinWindowWidth="641" /></VisualState.StateTriggers></VisualState><VisualState x:Name="narrowState"><VisualState.StateTriggers><AdaptiveTrigger MinWindowWidth="0" /></VisualState.StateTriggers><VisualState.Setters><Setter Target="inputPanel.Orientation" Value="Vertical"/><Setter Target="inputButton.Margin" Value="0,4,0,0"/></VisualState.Setters></VisualState></VisualStateGroup>
</VisualStateManager.VisualStateGroups>

在本地计算机上调试应用。请注意,UI 外观与以前相同,除非窗口变得窄于 641 像素。

在移动设备仿真器上调试应用。请注意,UI 使用你在 narrowState 中定义的属性并正确显示在小屏幕上。

如果你在以前版本的 XAML 中使用过 VisualStateManager,你可能会注意到 XAML 在此处使用简化的语法。

名为 wideState 的 VisualState 具有一个 AdaptiveTrigger,并且其 MinWindowWidth 属性设置为 641。这意味着仅在窗口宽度不小于 641 像素的最小值时应用该状态。你没有为此状态定义任何 Setter 对象,因此它会将你在 XAML 中定义的布局属性用于页面内容。

名为 narrowState 的第二个 VisualState 具有一个 AdaptiveTrigger,其 MinWindowWidth 属性设置为 0。当窗口宽度大于 0 但小于 641 像素时,应用此状态。(在等于 641 像素时,应用 wideState。)在此状态下,定义一些 Setter 对象以更改 UI 中控件的布局属性:
•将 inputPanel 元素的 Orientation 从 Horizontal 更改为 Vertical
•将 4 的顶部边距添加到 inputButton 元素。

最后再说几句

祝贺你,你已创建了自己的第一个适用于 Windows 10 和 UWP 的应用!

Microsoft Visual Studio Community 是完全免费的,可供各个开发者、开放源代码项目、学术研究、教育和小型专业团队免费使用的产品。
Microsoft Visual Studio 2015 Community 下载
https://www.visualstudio.com/products/visual-studio-community-vs

更多Windows开发教程,尽在 Windows 开发人员中心

创建你的第一个Windows通用应用(UWP)相关推荐

  1. C#创建、安装一个Windows服务

    关于WIndows服务的介绍,之前写过一篇:http://blog.csdn.net/yysyangyangyangshan/article/details/7295739.可能这里对如何写一个服务不 ...

  2. C#创建一个Windows Service

    Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的.所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Window ...

  3. 创建一个windows服务的小程序及注意事项

    1,首先在vs中创建一个windows服务项目 会生成一个Service1.cs的文件  打开该文件 切换到代码视图  有两个方法   OnStart(string[] args)和OnStop()方 ...

  4. 创建一个Windows Service应用程序

    创建一个Windows Service应用程序 下载本文代码 见资源 正是由于.NET Framework的出现,才使你能够构建出在系统重新启动时自动运行的.无人参与的(unattended)应用程序 ...

  5. C#设计一个Windows应用程序,在该程序中首先构造中学生、大学生等派生类,当输入相关数据,单击不同的按钮(“小学生”“中学生”“大学生”)将分别创建不同的学生对象,并输入当前的学生总人数,该学生的

    设计一个Windows应用程序,在该程序中首先构造中学生.大学生等派生类,当输入相关数据,单击不同的按钮("小学生""中学生""大学生")将 ...

  6. 使用C++代码创建一个Windows桌面应用程序

    下面六星教育整理使用C++代码创建一个Windows桌面应用程序,供大家学习参考. WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HI ...

  7. 如何创建一个Windows软件

    很久以前我创造了一个Windows软件,我今天把这个方法分享给大家. 我的系统: Edition Windows 11 Pro Insider Preview Version 22H2 Install ...

  8. 利用c语言在屏幕上画出窗口,第一课:创建一个windows窗口

    跟我一起学图形编程                               作者:姚明联系方式: 欢迎使用我的图形学教程.我是计算机专业的学生,对图形图像技术有浓厚的兴趣,就读期间广泛的涉及相关知 ...

  9. C# 如何创建一个Windows服务(Windows Service)

    Windows服务经常用来做一些定时任务处理,今天来说一下如何搭建一个Windows服务(基础篇,不喜勿喷). 1.搭建一个Windows Servier,我是VS2017 .NET FrameWor ...

最新文章

  1. python内置类属性_Python内置方法和属性应用:反射和单例(推荐)
  2. java23种设计模式之五:代理模式
  3. 刚刚出炉的Asp.net网站部署视频教程
  4. 逆向知识第十讲,循环在汇编中的表现形式,以及代码还原
  5. kafka 初步学习
  6. MapReduce 示例:减少 Hadoop MapReduce 中的侧连接
  7. python自加1_python中有自增
  8. pagehelper的使用_Spring Boot 2.x(十三):你不知道的PageHelper
  9. Bailian2737 大整数除法【大数】
  10. 禁止暴风影音stormtray.exe进程
  11. 【转载】快逸报表问题
  12. 2021-01-03
  13. iPython的安装过程
  14. 记录一次keil调试过程:自动识别GPS厂家芯片
  15. cqyz oj | 【训练题】铲雪车问题
  16. java apm_APM 追踪 Java 应用性能
  17. 狂飙突进的幻想乡 - 最短路 - 辛普森积分
  18. 张宇1000题高等数学 第十四章 二重积分
  19. android换手机怎么同步,换了新手机,怎么可以快速将旧手机上的信息迁移到新手机上?...
  20. 公理化体系降维打击1之补充(脱敏版本)再加俺老孙的故事(开头)

热门文章

  1. 8.凤凰架构:构建可靠的大型分布式系统 --- 流量治理
  2. 理论动态 | 数据治理(第3期)
  3. dotnet run 提示System.Net.Sockets.SocketException (10049): 在其上下文中,该请求的地址无效。...
  4. RAM嵌入式项目实战开发
  5. 浙江省计算机二级vb考试提纲,浙江省大学生计算机等级考试二级(VB)考试大纲.doc...
  6. Python之深入解析Box为字典添加高级点符号访问特性
  7. Java之okhttp3请求方式
  8. 中级软件设计师考试经验总结
  9. CANoe软件通道与硬件通道的映射配置
  10. charles证书过期-mac