我的borderless window
调整大小模式设置为canMinimize
WindowStyle="None"
ResizeMode="CanMinimize"
当我将window state
更改为最小化时,点击某个按钮并从任务栏图标恢复,然后触发了窗口的激活事件。
但是当我从任务栏图标最小化窗口并从任务栏图标恢复时,单击然后我的窗口不会激活激活的事件。
答案 0 :(得分:5)
这与窗口样式无关。您也可以尝试其他样式,您将观察到相同的行为。
底层窗口激活逻辑基于Windows的消息。 单击活动窗口的任务栏图标时,以下消息将发送到窗口:
WM_ACTIVATE
(MSDN)wParam
包含WA_INACTIVE
+ 未最小化 接下来是:
WM_ACTIVATE
wParam
包含WA_ACTIVE
+ 最小化 这会导致WPF窗口引发Activated
事件,即使窗口实际上已被最小化(看到WA_ACTIVE
状态?)当您单击任务栏图标时再一次,窗口将被恢复并将收到消息:
WM_ACTIVATE
wParam
包含WA_ACTIVE
+ 未最小化
但由于窗口“已经”已经激活,因此不会发生Activated
事件。
我认为这是一个Windows'错误(为什么我们会收到WA_ACTIVE
状态,即使窗口被最小化了?)也许你可以向微软询问这个问题。
要解决此问题,您可以使用StateChanged
事件并检查窗口的状态(WindowState.Minimized
与WindowsState.Normal
)。