在WP开发中时常会用到Popup控件,它相当于对话框类的一个控件,能悬浮于其他UI界面之上。Popup虽然好用,但是也有一些缺点,一个重要的缺点就是当我们点击非Popup控件之外的区域时Popup不会隐藏消失,这给我们的带来了一些麻烦,因为很多时候我们需要的这样的一种功能。
解决这个问题也有很简单的方法。
我们可以把popup中置一个Grid,设置成屏幕大小,并把其背景设置成透明,再在Grid上放置我们真正的popup布局界面即可,我们需要处理这个Grid上的操作事件,当捕获到是在popup布局之外的区域时我们把popup隐藏。这样我们就有了一个我们在文章开头提到的功能的一个popup控件了。
简单的例子如下:
在这个例子中,当点击"弹出Popup"按钮时会弹出一个popup控件,当在popup区域外操作时popup会隐藏。
程序布局如下:
<phone:PhoneApplicationPage
x:Class="HidePopupDemo.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Pho