如何在silverlight中自定义MessageBox



我是silverlight初学者,我在一种情况下,我必须弹出一个包含三个按钮的消息框(是/否/Ok)。请不要给我以下建议(我已经试过了):

(1)使用Childwindow:虽然这是一个很好的解决方案,但它弹出的方式不像MessageBox弹出,因为在消息框弹出,我们可以清楚地看到背后的数据,但我们不能编辑/点击/更改它,而在子窗口弹出它是不太可见。(所以如果你知道任何方法使childwindow背景就像MessageBox一样,那么欢迎你告诉我替代方案)。

(2)使用弹出控件:因为它不弹出,可以很容易地从MessageBox和背后的数据总是可编辑的弹出控件弹出,如果我将其设置为崩溃,然后它显示什么。所以我想要的弹出窗口就像messagebox。show()弹出窗口一样

然而在MeassageBox.Show()中,我们可以看到,当它弹出时,后面的GUi是可见的,但不可点击,它弹出的方式是完美的,所以我想它可以以完全相同的方式弹出,上面有三个按钮。

有人能帮我实现我的目标吗?

如果我理解这个问题,你想要一个默认的MessageBox样式的弹出窗口,只有Yes/No/OK按钮。要认识到没有一个理想的解决方案——即使是Windows API(在完全信任的情况下,你不能在Silverlight中访问它)也不能提供这种按钮组合(无论如何,没有使用高级技术)。

因此,您只剩下使用PopupChildWindow的非理想选择。我认为试图模仿Windows对话框弹出的确切风格是错误的,因为这种风格取决于系统,而你无法从Silverlight访问。相反,我建议你选择一个你觉得舒服的样式,并且它与你的应用程序的主题相匹配。

在任何情况下,与所有控件一样,您有两个选项来样式化ChildWindow:

1)修改其样式属性,如OverlayOpacity, BorderBrush等。看看默认的控件模板,看看这些属性是如何在控件的表示中使用的。

2)如果您需要做比默认模板允许的更多的定制,那么您总是可以复制和修改ControlTemplate。这样就可以对弹出窗口的外观进行细粒度控制,包括打开/关闭动画。网上有很多关于修改控件模板的信息(例如,MSDN)。

最新更新