在孩子打开时让父窗口保持活动状态

时间:2012-05-14 13:58:12

标签: c# wpf silverlight childwindow

如何打开子窗口并保持父窗口处于活动状态。我正在使用Silverlight 5和最新版本的工具包。

据我所知,使用画笔可以帮助让背景看起来正常,但父窗口仍然处于禁用状态。

我正在尝试实现类似于控件F的查找功能。我希望用户在子窗口中搜索,匹配将显示在主显示器上。

感谢您的帮助,

1 个答案:

答案 0 :(得分:3)

ChildWindow用于模态(禁用父级)使用。

它使用覆盖窗口使背景显示为已禁用,但是它也将Application.Current.RootVisual的IsEnabled标记为false,然后在ChildWindow关闭时恢复它。

这可以防止与“父”窗口的控件进行任何交互。只有这样才能使自己的样式成为ChildWindow控件,但忽略了这种行为。

FloatableWindow是Tim Heuer的作品中的一个编码复合项目,这是解决问题的一种很好的快捷方式。虽然看起来该项目有一段时间没有更新,但与最新的Silverlight版本的兼容性可能会有问题。

DevExpress有一个DXDialog控件,其中包含用于模态和非模态行为的Show和ShowDialog函数。我敢肯定其他的silverlight工具包公司提供类似的替代方案,这只是我熟悉的一个。

如果您不介意制作自定义控件,可以按照Tim Heuer blog post这样的主题来调整自己的控件,或使用像Reflector这样的工具从Silverlight逆向工程ChildWindow本身并删除你不想要的部分。