c# - 如何在 silverlight 中制作自定义 MessageBox

标签 c# .net silverlight silverlight-5.0 messagebox

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

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

(2) 使用 PopUp 控件:因为它不会完全弹出并且可以很容易地从 MessageBox 中区分出来,并且当 PopUp 控件弹出时后面的数据始终是可编辑的,如果我将它设置为 Collapsed 那么它什么都不显示。所以我想像 MessageBox.Show() 弹出窗口一样弹出。

而在 MeassageBox.Show() 中我们可以看到,当它弹出时,后面的 GUI 是可见的但不可点击,而且它弹出窗口的方式是完美的,所以我想要 可以通过三个按钮以完全相同的方式弹出的东西。

有人可以帮助我实现我的目标吗?

最佳答案

如果我理解这个问题,您想要一个默认 MessageBox 样式的弹出窗口,只有 Yes/No/OK 按钮。认识到没有理想的解决方案——即使是 Windows API (除非完全信任,否则您无法在 Silverlight 中访问)不提供此按钮组合(无论如何不使用 advanced techniques)。

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

在任何情况下,与所有控件一样,您有两种样式选择 ChildWindow:

1) 修改其style properties比如OverlayOpacity, BorderBrush等。看看默认的control template查看这些属性是如何在控件的演示中使用的。

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

关于c# - 如何在 silverlight 中制作自定义 MessageBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24826488/

相关文章:

c# - Sql server 真实数据类型,C# 等价物是什么?

.net - 从非特定的 .NET 应用引用特定于平台的库

Silverlight MouseDragElementBehavior。拖放后如何重新排列项目?

c# - 文本框 - 绑定(bind)属性名称

c# - 如何在代码中定义 DataTemplate?

c# - C#获取外部进程的线程起始地址

c# - 如何检测另一个音频是否在后台播放? ( window 电话 7)

c# - 在 docker 容器中安装 sqlite 后“没有这样的表”

c# - .NET 中的 TCP 服务器发送速度太快

c# - 如何获取所有引用程序集的列表(已加载或未加载)