如何在Silverlight中创建弹出对话框

本文关键字:对话框 创建 Silverlight | 更新日期: 2023-09-27 17:47:49

我想在silverlight中创建一个弹出对话框,在其中我可以操作控件、输入数据和返回值。我希望它是模态的,这样当它打开时,页面"下面"是不可访问的。我还没有找到一个简单的方法来做这件事。有什么建议吗?

如何在Silverlight中创建弹出对话框

我知道Silverlight2解决方案的问题,但在Silverlight3(现在是Beta版,2009年7月是RTW版)中有一个内置的ChildWindow,可以完成您想要的一切。

我也没有找到一个完美的解决方案。我见过的最接近的是:使用Popup创建对话框类

如果可以是非模态的,您可以使用HtmlPage.PopupWindow()尝试此技巧。如何弹出浏览器窗口

我是Sliverlight框架的新手,刚刚开始了解它,但我对弹出模式对话框也有类似的需求。我刚刚尝试了一个看起来很有前景的想法:

  1. 我创建了一个矩形(名为"盾牌"),它覆盖了我的整个应用领域。它存在于主应用程序中的所有内容之上。我将填充刷设置为白色,将不透明度刷设置为81%,以便主要应用程序内容显示出来,但很轻(如禁用)。然后确保"盾牌"是可测试的。现在,当"盾牌"可见时,它实际上也会阻止对下面控件的所有输入(至少是通过鼠标,还没有尝试键盘)。当应用程序初始化时,将"Shield"可见性设置为Collapsed。在这种状态下,它不会阻止对主应用程序的输入
  2. 然后,在屏蔽顶部按z顺序存在的另一个画布元素上构建对话框。通常情况下,对话框是不可见的,但当我需要它时,我只需将"屏蔽"设置为可见,并将对话框设置为可见。由于对话框位于"屏蔽"的顶部,我得到了一个非常类似模态的行为。当对话框关闭时,使对话框画布和"盾牌"画布再次不可见,主应用程序再次处于活动状态

我相信这是最暴力的方式,我最终会专注于一个更优雅的结构,但它目前有效。

这里有一个更优雅的解决方案:http://community.devexpress.com/blogs/theonewith/archive/2008/08/06/custom-silverlight-controls-creating-a-reusable-messagebox-dialog-part-i.aspx

我也有同样的要求,ScottGu的"使用用户控件构建基本模式对话框"是符合我要求的最佳解决方案。

这里有一个免费的库,它提供了一个:http://www.vectorlight.net/demos/popup_dialogs.aspx