如何在WPF应用程序中挂接事件或更改窗口?

时间:2019-01-19 08:20:25

标签: c#

每个人,希望你一切都好。 这是要求:我有一个C#WPF应用程序,我想跟踪此应用程序中的事件。

不是母语人士,请原谅。 谢谢。

我在'https://github.com/justcoding121/Windows-User-Action-Hook'上找到了一个鼠标挂钩,但是它可以挂钩全局事件,而不是应用程序中的事件。

此挂钩无法挂钩WPF应用程序中的事件。

1 个答案:

答案 0 :(得分:1)

在获得答案之前,您需要注意两件事:

1)在WPF中,除了窗口本身之外的所有东西都是人为的-所有UI元素都是通过DirectX而不是操作系统绘制的(这就是为什么,例如,在WPF中,您可以将一个按钮放到另一个按钮中,而在Windows中表格不能)。因此,操作系统无法以某种方式了解应用程序中的鼠标事件。

2)WPF中几乎所有事件都被路由-这意味着,当一个控件触发一个事件时,它实际上可以在多个地方进行处理,通常在该控件上首先进行处理,然后将树上移到并包括窗口。即使没有在树上声明声明(例如,未在Window上声明Click,但窗口仍可以间接响应自身内的单击),控制树的上(或下)将触发此事件。

顺便说一句,您可以正常使用事件(例如,this.MouseMove + = MyHandler;在窗口构造函数中,或者在XAML中使用)或通过路由事件使用语法(在C#中为this.AddHandler(Button.ClickEvent,MyHandler);在XAML中为)。通常只有在处理未在元素上声明的事件(例如,单击窗口)时才需要后者。