web技术分享网 欢迎你!
在《一起学习win8应用1》中,我们做了一个最基础的“hello world!"程序。(通过Button的Click事件,让TextBlock来显示TextBox的内容)。大概了解了下,win8应用程序的一个开发流程。昨天,一朋友也想做个hello world,但是,他只是想用最简单的方式,弹出个提醒框。结果,把他给惹急了。说是找不到MessBox了,好不容易找到了个MessageDialog,折腾了老半天就不会用。我笑了笑,就说那今天我就写个教程吧!顺便学习下,win8解决方案的一些文件。
第一,我们打开vs2012,点击文件-新建-空白项目;
我们还是先大概看看,各个文件是做什么用的.已用红字标明,具体以后用到会慢慢细说。
第二,在设计视图拉两个控件:一个Button,一个TextBlock控件,并设置相应的属性。如图
这边值得注意的是,TextBlock中的Style这个属性。它引用的是静态资源。其实也就是我们解决方案里面那个Common文件夹里的那个standardStyles.xaml里的样式。
这时我们可以再看下解决方案里面的App.xaml文件了。
哦,是不是有恍然大悟的感觉,原来那个标准的全局样式,是在app中加载的。
那我们如何通过属性,为各种控件添加和修改全局样式属性呢?
我们“选择”某个控件,点击“属性”面板,在“杂项”找到Style,点击最右边的小正方形,会弹出一个框,点击“本地资源”,进行选择。ok,我们就可以选择我们在StandardStyles中定义的样式了。编辑,则是点击对应的“编辑资源”或“转换为新资源” 按钮。
第三,我们给按钮添加点击事件;
其实,这样一个最简单的弹出框就做好了。可能很多人,会觉得疑惑,包括我那个瞎搞了半天都搞不定弹出框的朋友。我想主要是因为这边出现了async跟await这两个关键字,可能,我是说可能,有些同学还搞不清var这个关键字。如果是这样的话,那很遗憾的告诉这部分人,要赶紧补功课了。fw4.5都出来了,何必一直停留在2.0的时代呢?
我们先来看看运行结果:
现在弹出框我们可以采用这种方式,当然,还有更好的。在这边我们看到了MessageDialog这个类,当然,别忘了要引用命名空间Windows.UI.Popups
MessageDialog有两个构造函数,分别是只传内容和传了内容跟标题的,并且它提供了title和comment属性,我们可以让弹出框的标题跟内容重新赋值,就像例子那样。
这些是不是都跟MessBox没啥两样。
但MessageDialog没有像MessBox的show方法,取而代之的是showAsync方法。
// 摘要:
// 开始显示对话框的异步操作。
// 返回结果:
// 表示异步操作的对象。有关异步模式的更多信息,请参见 Windows 运行时中的异步编程。
public IAsyncOperation<IUICommand> ShowAsync();
这也是为什么我们要用await跟async关键字的原因了。异步编程对于性能上的提高还是有很大用处的,这边大家可以先自己查点资料。
值得我们注意的是:await关键字在方法体中使用,您千万别忘了在方法声明中使用下async。
很多人这样写,所以,一直报错。(包括我那个朋友)这边是需要在void前面加个async的,而且async也只能在void方法中使用。
默认的弹出框是会带有一个关闭按钮的,当然,我们也可以通过代码来自定义按钮。
这边我们用Commands.Add来添加“确定”和“取消”按钮,并进行事件的绑定。我们并对按钮进行设置默认命令索引。
“确定”和“取消”按钮,既然是事件,我们就可以采用lamda表达式来进行操作。
现在我们来看看最后的运行结果: