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

时间:2008-11-03 21:41:21

标签: c# .net silverlight silverlight-2.0

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

6 个答案:

答案 0 :(得分:12)

我知道要求Silverlight 2解决方案的问题,但在Silverlight 3(现在是Beta版,2009年7月的RTW)中,有一个内置的ChildWindow可以完成您正在寻找的所有内容。

答案 1 :(得分:5)

我也没有找到完美的解决方案。我见过的最接近的是: Using Popup to create a Dialog class

如果可以是非模态的,可以使用HtmlPage.PopupWindow()尝试这个技巧。 How to Popup a Browser Window

答案 2 :(得分:1)

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

  1. 我创建了一个覆盖整个应用区域的Rectangle(名为“Shield”)。它存在于主应用程序中的所有内容之上。我将填充画笔设置为白色,将不透明度画笔设置为81%,以便主要应用程序内容显示,但轻轻地显示(如禁用)。然后确保“盾牌”是可以测试的。现在,当“Shield”可见时,它实际上也会阻止对下面控件的所有输入(至少从鼠标开始,还没有尝试过键盘)。应用初始化时,将“屏蔽”可见性设置为“折叠”。在该状态下,它不会阻止对主应用程序的输入。
  2. 然后在另一个画布元素上构建对话框,该画布元素位于屏蔽顶部的z顺序中。通常对话框是不可见的,但是当我需要它时,我只是将“Shield”设置为可见,并将对话框设置为可见。由于对话框位于“盾牌”之上,因此我得到一种类似模态的行为。关闭对话框后,再次使对话框画布和“Shield”画布不可见,主应用程序再次处于活动状态。
  3. 我确信这是最蛮力的做法,我最终会选择一个更优雅的结构,但它现在可以使用。

答案 3 :(得分:1)

答案 4 :(得分:0)

我有同样的要求,ScottGu's Building a Basic Modal Dialog Using a User Control是符合我要求的最佳解决方案。

答案 5 :(得分:0)

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