天下网吧 >> 网吧系统 >> 系统动态 >> 正文

Win10开发入门:UWP通用应用程序项目结构分析

2016-3-3不详佚名
isual Studio 2015 XAML页面设计视图

点击左侧的工具箱,将其中的Button拖到主页面区域中即可完成一个按钮的添加,如下图:

Win10开发入门:UWP通用应用程序项目结构分析

选中添加的按钮,在右下角的属性窗格中就会出现按钮的属性设置选项,点击小窗格中右上角的闪电图形图标即可显示所有事件列表:

Win10开发入门:UWP通用应用程序项目结构分析

找到其中的click项,在右侧文本框中输入函数名称(自定义或留空使用默认名称),双击文本框即可为此按钮添加单击事件响应函数,并自动进入函数编辑页面(即MainPage.xaml.cs文件编辑页面)。

此时按照下面的代码在函数体(一对大括号内)添加代码,并注意在函数名称前面加上async修饰符。

private async void button_Click(object sender, RoutedEventArgs e)

{

MessageDialog dlg = new MessageDialog("Hello World!");

await dlg.ShowAsync();

}

在复杂项目中我们需要很多类,而这些类可能由不同的人进行编写,为了不至于产生冲突,使用命名空间进行“分类”。由于我们使用的MessageDialog(消息对话框)类被定义在Windows.UI.Popups命名空间中,因此要使用该类,需要在代码文件的最上面部分加上下面一行代码:

using Windows.UI.Popups;

Win10开发入门:UWP通用应用程序项目结构分析

▲为按钮添加单击事件响应函数后最终代码

至此我们已经完成了按钮及其单击事件处理函数的添加,点击窗口顶部工具栏中的绿色播放按钮即可进行编译运行,运行后主界面弹出,点击窗口中的按钮即可弹出Hello World!提示对话框,如下图所示:

Win10开发入门:UWP通用应用程序项目结构分析

程序的入口点在哪里?

下面我们进一步分析,学习过C++等语言的朋友都知道应用程序都有一个入口点,那么这里的UWP应用程序也不例外。实际上在本文所建立的应用程序中还存在另一个类,所谓的入口点就隐藏在这里,下面我们把它揪出来。

点击菜单中的视图——类视图,此时在右侧即可出现类视图,展开Hello(命名空间)你就会看到除了App、MainPage类之外,还有一个Program类,如下图所示:

Win10开发入门:UWP通用应用程序项目结构分析

双击Program类,会在左侧打开名为App.g.i.cs的文件(它是隐藏的,由编译器自动生成),部分代码如下图所示:

Win10开发入门:UWP通用应用程序项目结构分析

可以看到在Program类中包含一个名为Main()的方法,这即是整个应用程序的入口点函数。在前面我们介绍过类的实例化概念,只有类被实例化为对象后才具有意义。不过这里的Program类是一个静态类(前面用static进行了修饰),静态类的特点是不需要实例化为对象就可以使用其中定义的各种方法(当然也都是静态的),那么Main()函数就可以直接运行。

各个类或对象之间的关系

继续观察Main()函数中的语句,可以发现它实例化了一个App类的对象(new APP();),这也是整个应用中唯一的一个App类实例化对象。有了App对象,那么程序页面又是怎样呈现的呢?(即MainPage类是如何发挥作用的呢?)

实际上在UWP应用App对象中包含一个Window对象,它提供了对窗口的各种操作方法。在应用程序启动时,又会将一个Frame对象赋给Window对象(的Content属性)。在应用程序中除了MainPage主页面外,我们还可以添加其他自定义页面,而Frame的作用就包括让应用程序窗口内容在不同页面之间进行导航。Windows类和Frame类的定义包含在我们引用的程序集中,因此在应用程序的类视图中并没有显示这两个类。以上类或对象之间的关系在App类的OnLaunched方法中有所体现,OnLaunched方法即表示应用程序启动时需要完成的一系列动作,主要代码(在App.xaml.cs文件中)如下:

Win10开发入门:UWP通用应用程序项目结构分析

以上就是对UWP应用程序结构的简单分析,如果你没有C#语言基础,看不懂代码不要紧,现在你只需要对整个结构有一个整体了解。下次我们将对C#语言的基础要点进行学习。

本文讨论帖请前往IT之家IT圈《Win10开发:UWP通用应用程序项目结构分析(讨论帖)》。

关注Windows10,锁定Win10之家(http://win10.ithome.com)

本文来源:不详 作者:佚名

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下