gpt4 book ai didi

单击时WPF弹出窗口不会导致应用程序聚焦

转载 作者:行者123 更新时间:2023-12-04 02:19:28 26 4
gpt4 key购买 nike

我有一个控件正在使用一个弹出窗口,其中包含一些 WPF 控件,并且 StaysOpen="True"。问题是当应用程序没有焦点时单击弹出窗口时,应用程序没有获得焦点。我做了一些研究,似乎这可能是因为弹出窗口是用于菜单的,所以它们没有连接所有正确的 Windows 消息处理程序。这是演示问题的准系统示例:

<Window x:Class="TestWindowPopupBehavior.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:TestWindowPopupBehavior="clr-namespace:TestWindowPopupBehavior" Title="MainWindow" Height="350" Width="525">
<Grid>
<Popup StaysOpen="True" IsOpen="True" Placement="Center">
<ListBox>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
<TextBlock>123</TextBlock>
</ListBox>
</Popup>

</Grid>
</Window>
  • 运行应用程序。
  • 与列表框交互,应该可以正常工作。
  • 切换到另一个应用程序。
  • 在应用程序未激活时单击列表框。什么都没发生
  • 单击列表框外的应用程序。
  • 单击列表框。它现在正在工作。

  • 我希望在第 4 步中发生的事情是应用程序将获得焦点,并且列表框将选择新项目。

    这个问题是否有任何解决方法,或者我缺少什么明显的东西?我正在考虑用成熟的窗口重写整个弹出代码,并重新实现我们的行为,但这似乎真的很复杂,只是为了解决这样的一个小问题。

    最佳答案

    如果您处理MouseLeftButtonDown事件,您可以调用Window.Activate()方法。但是您应该为每个元素编写它 - Popup对于所有 TextBlock s。

    您可能遇到的问题是,在 Windows 上您可以交换鼠标按钮,从左到右,反之亦然(但我不知道这是如何工作的),所以,您可能必须处理 MouseRightButtonDown事件。

    关于单击时WPF弹出窗口不会导致应用程序聚焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10290504/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com