【问题标题】:Leave parent window active when child opens当孩子打开时让父窗口保持活动状态
【发布时间】:2012-05-22 00:34:22
【问题描述】:

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

我了解使用画笔有助于使背景看起来正常,但父窗口仍处于禁用状态。

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

感谢您的帮助,

【问题讨论】:

    标签: c# wpf silverlight childwindow


    【解决方案1】:

    ChildWindow 是为模态(禁用父级)使用而设计的。

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

    这可以防止与“父”窗口的控件发生任何交互。解决此问题的唯一方法是制作您自己的样式 ChildWindow 控件但忽略此行为。

    FloatableWindow 是 Tim Heuer 的一个 codeplex 项目,它是解决问题的好方法。尽管如此,项目似乎已经有一段时间没有更新了,因此与最新的 silverlight 版本的兼容性可能存在问题。

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

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

    【讨论】:

    • 谢谢,这很好地解释了我为什么会有这种行为。我已经在自定义子窗口中,所以我将看看启用根视觉属性以获取自定义行为。
    • 您不需要对 silverlight ChildWindow 进行逆向工程...代码在这里:silverlight.codeplex.com/SourceControl/changeset/view/…
    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多