【问题标题】:Keep WPF window over the taskbar without taking focus将 WPF 窗口保持在任务栏上方而不获得焦点
【发布时间】:2020-03-13 19:21:47
【问题描述】:

我想在任务栏顶部维护一个 WPF 应用程序。

问题在于,每当您与任务栏交互时,程序就会进入并停留在那里。

示例:

我尝试过的:

  • Activate() 控制键盘并从当前应用程序中移除焦点,不希望这样
  • BringToView() 没有在任务栏顶部带来窗口
  • Show() 没有在任务栏顶部带来窗口
  • Activate() -> ClearFocus() 会继续抢焦点

窗口的一些属性:

  • WindowStyle="None"
  • Topmost="True"

首选的行为是,如果要继续执行任务栏,那么一旦任务栏的操作完成,它就会返回。它最好也不会在任何时候从键盘或任何其他进程中窃取焦点。

我已经查看了这里和 MSDN 的各种问题,但还没有任何工作。

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    你的意思是像on-Screen Keyboard这样的最高状态?

    默认工具没有机会。屏幕键盘可以实现这一点,因为它实际上是窗口系统的一部分。就像任务栏和开始菜单一样。就像不同的 UI 元素是 Window 的一部分一样。但是您在其中托管的图像只是一个客人。

    如果您可以截获并在视频信号上绘制,那将是一回事。这是可能的,但它是远离 WPF 的好方法。

    【讨论】:

    • 刚刚尝试过,是的,就像屏幕键盘一样完美。遗憾的是,这是不可能的——是否可以在不关注焦点的情况下激活 wpf 窗口?这样我可以在x time 之后恢复窗口?
    • @AndrewRaleigh 我不确定。但似乎激活事件会告诉您何时(重新)获得焦点:docs.microsoft.com/en-us/dotnet/api/… |这似乎是该类的生命周期概述:docs.microsoft.com/en-us/dotnet/framework/wpf/app-development/… 它可能包含一些有用的信息。
    • 似乎没有按我喜欢的方式工作,如果我发现任何问题,我会尝试解决方法并更新帖子。感谢您的帮助!
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多