首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChildWindow_Loaded的全局事件

ChildWindow_Loaded的全局事件
EN

Stack Overflow用户
提问于 2012-05-05 11:46:03
回答 1查看 184关注 0票数 1

我在寻找如何创建一个全局事件的答案时遇到了困难,每当一个子窗口被另一个父窗口显示时,该事件就会被触发。我想有一个事件处理程序,这将被所有的子窗口使用,而不是附加到每个子窗口(事件处理程序)。

这在WPF中是可能的吗?如果可能的话,我们将非常感谢您的帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-05 12:40:30

不可能以“全局”方式处理Window.Loaded事件,因为它的路由类型是“直接”。直接路由的事件不遵循路由,它们只在引发它们的同一元素中进行处理。无论如何,您可以使用以下技巧来处理应用程序中的任何窗口创建:

代码语言:javascript
复制
    // Main window initialization code 
    _argsField = typeof(DispatcherOperation).GetField("_args",
        BindingFlags.NonPublic | BindingFlags.Instance);

    Dispatcher.Hooks.OperationCompleted += Hooks_OperationCompleted;
}
FieldInfo _argsField;
void Hooks_OperationCompleted(object sender, DispatcherHookEventArgs e) {
    if(e.Operation.Priority == System.Windows.Threading.DispatcherPriority.Loaded) {
        var source = _argsField.GetValue(e.Operation) as System.Windows.Interop.HwndSource;
        if(source != null) {
            Window w = source.RootVisual as Window;
            // ... here you can operate with newly created window
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10458667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档