如何打开子窗口并保持父窗口处于活动状态。我正在使用Silverlight 5和最新版本的工具包。
据我所知,使用画笔可以帮助让背景看起来正常,但父窗口仍然处于禁用状态。
我正在尝试实现类似于控件F的查找功能。我希望用户在子窗口中搜索,匹配将显示在主显示器上。
感谢您的帮助,
答案 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本身并删除你不想要的部分。