如何在Silverlight中制作自定义消息框

3
我是一名silverlight初学者,我遇到了这样的情况:我需要弹出一个包含三个按钮(是/否/确定)的消息框。请不要给我以下建议(我已经尝试过并感到疲倦):
(1) 使用Childwindow:虽然这是一个好的解决方案,但它弹出的方式不像MessageBox弹出窗口,因为在MessageBox弹出窗口中,我们可以清楚地看到后面的数据,但我们无法编辑/单击/更改它,而在Childwindow弹出窗口中,它的可见性较低。(因此,如果您知道任何使childwindow背景可见的方法,就像MessageBox一样,那么欢迎告诉我替代方案)。
(2) 使用PopUp控件:因为它不会像MessageBox那样准确地弹出,并且可以很容易地与MessageBox区分开来,当PopUp控件弹出时,后面的数据始终是可编辑的,如果我将其设置为Collapsed,则什么也不显示。所以我希望弹出窗口能像MessageBox.Show()一样完全弹出。
而在MessageBox.Show()中,我们可以看到它弹出时后面的GUI是可见的但不可点击,弹出方式也是完美的,所以我想要一个能够完全弹出的带有三个按钮的窗口。
请问有人能帮我实现我的目标吗?

ChildWindowOverlayBrushOverlayOpacity 属性 - Vladimir
@VladimirFrolov 谢谢,但请更详细地解释一下如何处理它们。 - user3735822
我无法编辑ChildWindow中的任何内容。 - user3735822
@VladimirFrolov,我找到了编辑OverlayBrush和OverlayOpacity的方法;您建议我在其属性中进行哪些其他更改,以便它能够提供与MessageBox.Show()相同的视图。 - user3735822
1个回答

1
如果我理解正确,您想要一个弹出窗口,并且只带有是/否/确定按钮的默认消息框样式。请注意,没有理想的解决方案——即使是Windows API(在Silverlight中除了完全信任之外无法访问)也不提供这种按钮组合(无论如何都不能使用高级 技术)。 因此,您只能使用PopupChildWindow这些非理想的选项。我认为试图模仿Windows对话框弹出窗口的确切样式是错误的,因为该样式取决于您无法从Silverlight访问的系统。 相反,我建议仅选择您熟悉并符合应用程序主题的样式。

无论如何,与所有控件一样,您有两个选项来设置 ChildWindow 的样式:

1) 修改其 样式属性,例如 OverlayOpacityBorderBrush 等。查看默认的 控件模板,了解这些属性在控件呈现中的使用方式。

2) 如果您需要进行更多自定义操作,超出了默认模板的范围,那么您可以始终复制并修改 ControlTemplate。这允许您对弹出窗口的外观进行精细控制,包括其打开/关闭动画。关于修改控件模板的信息有很多(例如,MSDN)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接