天天看点

手把手玩转win8开发系列课程(18)

 这节,加入弹出对话框

弹出对话框

这个appbar button能起作用类额 ,他处理的源代码是直接放在click event里面中。大多数的buttons操作更需要一些额外的用户体验,因此我们使用flyout控件。

当用户点击了appbar按钮以后,这个弹出窗口就会出现,给予用户一定提示,当用户再度点击这个控件以后,这个东西就会消失。这有点像什么——像winfrom弹出的对话框,但他不是一个窗口,或者一个页面,他只是依附于这个窗口的某个层。这样弹出的窗口的,实现js中操作是使用了flyout控件,在xaml与c#实现一模一样的效果,需要popup控件,并且在相应的cs文件中进行了编码使其popup控件定位。由于,我所运用的win8消费者预览版,我真希望在win8的正式版中能够屏蔽这样的差异,这样我不需要对popup控件进行定位了。

这里我说说项目以外popup的问题。

popup是一个神奇的东西,可以很容易的解决一些复杂问题。它将控件的布局扩展到了第三维,可以将其child中的内容显示在当前界面之上。popup位于当前silverlight可见控件区域之上,即使你为某个控件设置了一个比popuo要大的canvas.zindex值也不会显示在popup之上,不过popup之间可以用canvas.zindex区分哪个popup显示在上面。还有一点,popup的child中的事件冒泡已经自己处理了,就好像popup与下面的所有控件没有关系一样。

 在实际应用中,有一个约定俗成的操作,就是弹出一个popup后在popup可见区域外的任意地方点击,popup会自动关闭,而popup本身是没有实现这个功能的。具体如何实现,这方案也有很多,下面是比较常用的方法:在要显示的内容下面放一个背景透明且覆盖整个silverlight可见区域的canvas,在canvas的点击事件处理方法中关闭popup。之所以选择canvas是因为在布局方式中只有canvas在背景透明时可以侦测到点击事件

哝——对popup有了一个简单介绍。

继续阅读