Win10系列:UWP界面布局进阶5
提示框
在Windows应用商店应用程序中可以使用提示框来向用户显示提示信息,例如可以通过对话框来询问用户当前需要执行的操作,还可以通过弹出窗口来显示需要注意的信息。本节将向读者介绍如何在Windows应用商店应用程序中添加对话框和弹出窗口。
(1)对话框
在应用程序运行的过程中,当向用户进行询问并希望得到用户明确回应时可以使用对话框。在弹出对话框时应用程序会暂时停止运行,待用户做出明确回应之后继续运行。下面通过一个示例来介绍如何在程序中添加一个询问用户操作的对话框。
在一个打开的Windows应用商店项目中新建一个空白页,并命名为MessageDialogPage。打开MessageDialogPage.xaml文件,添加一个名为"OutPut"的TextBlock文本框,用来显示用户选择的操作,添加文本框的代码如下所示:
<TextBlock Name="OutPut" FontSize="30" HorizontalAlignment="Left" Margin="23,24,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>
接着打开MessageDialogPage.xaml.cs文件,由于在界面中添加对话框会用到位于Windows.UI.Popups命名空间下的MessageDialog类,所以为了简化代码编写,首先将此命名空间添加到代码当中, 然后在OnNavigatedTo方法中编写代码,实现在导航到MessageDialogPage页面时显示对话框,具体代码如下所示:
async protected override void OnNavigatedTo(NavigationEventArgs e)
{
MessageDialog messageDialog = new MessageDialog("此页面将获得你的地理位置信息,是否继续浏览此页面");
messageDialog.Title = "警告!";
UICommand continueCommand = new UICommand("继续", (command) =>
{
OutPut.Text = "用户点击了'继续'按钮";
});
messageDialog.Commands.Add(continueCommand);
UICommand closeCommand=new UICommand("关闭", (commad) =>
{
OutPut.Text = "用户点击了'关闭'按钮";
});
messageDialog.Commands.Add(closeCommand);
await messageDialog.ShowAsync();
}
在上面的方法中,将在对话框中显示的文本信息作为参数实例化一个MessageDialog类的对象messageDialog来定义对话框,使用messageDialog对象的Title属性设置对话框的标题信息为"警告!"。接着添加对话框的操作按钮,由于添加操作按钮的方式相同,下面以添加"继续"按钮为例来介绍UICommand类的使用。实例化一个UICommand类的对象continueCommand,设置构造方法中的第一个参数为"继续",第二个参数为在点击"继续"按钮后调用的处理方法,这里通过定义匿名方法,并在其中将点击的按钮显示在前台界面。接着以continueCommand对象为参数调用messageDialog对象的Commands.Add方法将"继续"按钮添加至对话框中。通过同样的方式向快捷菜单中添加"关闭"按钮。最后调用messageDialog对象的ShowAsync方法异步显示对话框,用户可以通过单击对话框中的按钮来选择要执行的操作。
运行此页面,将显示对话框提示用户是否继续浏览,效果如图5-9所示。 若单击"继续"按钮会在前台界面显示"用户点击了'继续'按钮",效果如图5-10所示;若单击"关闭"按钮会在前台界面显示"用户点击了'关闭'按钮", 效果如图5-11所示。

图5-9对话框显示效果

图5-10 单击"继续"按钮后的效果图

图5-11 单击"关闭"按钮后的效果图
在设计应用程序时需要注意,尽量仅在需要用户做出重要选择时使用对话框,以为用户提供流畅的操作体验。
(2)弹出窗口
弹出窗口用来向用户显示提示信息,与对话框不同的是,弹出窗口在显示时不会打断应用程序的运行,并且可以通过单击或触摸屏幕中的其他位置将其关闭。下面通过一个示例来介绍弹出窗口的使用方法,本示例将在页面中设置一个文本内容为"创建文件夹"的按钮,单击此按钮会显示弹出窗口提示用户信息已提交,单击屏幕中的其他位置将关闭这个弹出窗口。
在一个打开的Windows应用商店项目中新建一个空白页,并命名为PopupPage,打开PopupPage.xaml文件,在默认的Grid元素中添加如下代码。
<Button Content="创建文件夹" Margin="463,237,0,0" VerticalAlignment="Top" Click="CreateFolder_Click" FontSize="24"/>
<Popup Name="ShowPopup" IsLightDismissEnabled="True" Margin="463,100,613,574">
<Border BorderBrush="White" BorderThickness="2" Background="Gray" HorizontalAlignment="Left" Height="114" VerticalAlignment="Top" Width="291">
<Grid>
<TextBox Name="FolderName" Height="30" BorderBrush="Black" Margin="38,10,39,69"/>
<Button Content="保存" FontSize="18" Margin="178,47,0,23" Background="Black" Click="Save_Click" ></Button>
</Grid>
</Border>
</Popup>
<TextBlock Name="ShowMessage" FontSize="30" HorizontalAlignment="Left" Margin="463,174,0,0" TextWrapping="Wrap" VerticalAlignment="Top"/>
上面的代码首先添加一个"创建文件夹"按钮,并为其单击事件添加事件处理方法。接着添加一个Name属性为"ShowPopup"的Popup控件,并定义Popup控件的IsLightDismissEnabled属性为True,以便通过单击屏幕中的其他位置关闭弹出窗口。接着在Popup控件内添加一个Border元素,并设置其BorderBrush属性的值为White、BorderThickness属性的值为2以便定义外围边框的颜色与粗细,给Background属性赋值为Gray从而定义背景色为灰色。在Border元素内部添加一个Grid元素,紧接着在Grid元素内定义一个Name属性为"FolderName"的TextBox文本框和一个"保存"按钮。
布局好前台界面后,打开PopupPage.xaml.cs文件,为"创建文件夹"按钮定义单击事件处理方法CreateFolder_Click (),当用户单击"创建文件夹"按钮时设置弹出窗口控件的IsOpen属性值为true,这样弹出窗口及弹出窗口中的元素就会显示在前台界面。实现代码如下所示:
private void CreateFolder_Click(object sender, RoutedEventArgs e)
{
ShowPopup.IsOpen = true;
}
接下来为"保存"按钮添加事件处理方法Save_Click(),当单击此按钮时将关闭弹出窗口,代码如下所示:
private void Save_Click(object sender, RoutedEventArgs e)
{
ShowPopup.IsOpen = false;
ShowMessage.Text= "创建的文件夹为:"+FolderName.Text;
}
上面的代码只是简单的将ShowPopup的IsOpen属性设置为false即可关闭弹出窗口,接着将FolderName的Text属性赋值给ShowMessage的Text属性,这样便可以在前台界面显示创建的文件夹名称。
运行程序,单击"创建文件夹"按钮,在按钮上方会显示弹出窗口,输入"新建文件夹(2)"后的效果如图5-12所示。单击弹出框口中的"保存"按钮则会关闭弹出窗口并在前台界面显示提示信息"创建的文件夹为:新建文件夹(2)",效果如图5-13所示。

图5-12 弹出窗口显示效果

图5-13 单击"保存"按钮后的效果
在Popup控件中虽然并没有对其中所添加的界面控件有所限制,但是开发者应根据应用的需求添加合适的控件。
Win10系列:UWP界面布局进阶5的更多相关文章
- Win10系列:UWP界面布局进阶3
与以往的Windows操作系统不同,Windows 10操作系统在正式版当中取消了任务栏中的"开始"按钮,将大部分的应用程序图标放置在开始屏中,同时将系统设置等常用功能整合到了Ch ...
- Win10系列:UWP界面布局进阶1
全新的Windows 10 操作系统支持多种视图模式,用户可以根据需要选择不同的视图模式显示应用.当用户同时浏览或操作多个应用程序时,可以将应用视图调整为辅屏视图或填充视图,这样在一个屏幕中可以同时对 ...
- Win10系列:UWP界面布局进阶9
Grid Grid元素用来定义一个由行和列构成的网格,这是一个功能强大的布局容器,当新建一个页面时会默认选用Grid作为顶级布局元素,下面将通过三个示例来介绍Grid的使用方法. (1)定义Grid的 ...
- Win10系列:UWP界面布局进阶7
Canvas Canvas元素用于定义一个区域,可以向这个区域中添加不同的XAML界面元素.Canvas会对其内部的元素采用绝对布局方式进行布局,下面通过三个示例来介绍Canvas的使用方法. (1) ...
- Win10系列:UWP界面布局进阶6
在Windows 10的"个性化设置"中,用户可以更改计算机在锁屏状态下的背景图片,除此之外,也可以通过Windows应用商店应用程序将喜欢的图片设置为锁屏背景,下面通过一个示例来 ...
- Win10系列:UWP界面布局进阶4
在开发Windows应用商店应用程序时,可以为页面中的界面元素添加快捷菜单,并设置与其相关的菜单项,用户通过选择快捷菜单中的菜单项来执行与被选择对象相关的操作.下面通过一个示例来介绍如何为页面中的一张 ...
- Win10系列:UWP界面布局进阶2
为了让用户可以在流畅浏览应用界面的同时提供与应用相关的功能按钮,Windows 10系统在用户界面当中引入了侧边栏,侧边栏可以在用户有需要对应用或者系统进行操作时显示,在没有需要操作的时候自动隐藏,并 ...
- Win10系列:UWP界面布局进阶8
StackPanel StackPanel能够以水平或垂直的方式整齐地排列位于其内部的元素.通过设置StackPanel的Orientation属性可以定义内部元素的排列方式,当将Orientatio ...
- Win10系列:UWP界面布局基础1
随着技术的不断发展,使用者对应用程序的界面体验提出了更高的要求,为了应对越来越复杂的界面设计需求和有效的简化界面开发过程,微软公司在其应用程序的开发技术当中引入一套新的应用程序界面描述语言,这就是XA ...
随机推荐
- .NET扩展方法 封装公用方法
定义方法的时候 第一个参数前面加上this 表示这个方法可以被IQueryable类型的对象.出来 调用的时候 只用传第二个参数 第一个参数不用传 第一个参数就是.出当前方法的参数 定义扩展 ...
- 如何在Vue项目中使用vw实现移动端适配(转)
有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越 ...
- 学习笔记49—matlab FDR校正
matlab自带函数mafdr,当ttest数较多时,可直接用[FDR, Q]=mafdr(P):但是Storey procedure在p值少于1000个时会崩溃,此时应改用BH FDR方法:mafd ...
- CentOS 7系统安装配置图解教程
操作系统:CentOS 7.3 备注: CentOS 7.x系列只有64位系统,没有32位.生产服务器建议安装CentOS-7-x86_64-Minimal-1611.iso版本 一.安装CentOS ...
- python+selenium2(二)
看完第一个程序,可能有不懂得地方,里面有定位元素的方式,之后会具体介绍定位的方式.这一篇介绍下对浏览器的操作. (1)浏览器的最大化 有点问题, Message: unknown error: c ...
- json包
1.官网下载 2.pom文件下载: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId&g ...
- spring容器bean的作用域 & spring容器是否是单例的一些问题
Spring容器中Bean的作用域 当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域.Spring支持如下5种作用域: singleto ...
- Bash Shell 注释多行的几种方法(转)
很实用的小技巧. 我们shell脚本写好了,但是想一行一行测试,怎么办. 笨方法:每行前面加一个 #,有时候我们原脚本里面本来就有注释,所以想再恢复的时候就麻烦了. Bash Shell 注释多行的几 ...
- vue 点击一个div,使input获得焦点
<div class="inputMessage" @click="inputMessage">输入留言</div> <input ...
- 前端数据交互之json&ajax
1.json json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数据 ...