首页 > 解决方案 > 弹出窗口未在触摸时关闭

问题描述

我有一个 WPF 弹出窗口,它可以完美地使用鼠标。

当用户按预期点击弹出窗口外部时,弹出窗口将关闭 - 到目前为止一切都很好

在触摸屏上时,弹出窗口拒绝关闭,直到另一个控件获得焦点(例如通过单击按钮或聚焦文本框)

我需要做什么才能让弹出窗口像点击一样关闭?

我认为这与不失去对触摸的关注有关,但我在谷歌上找不到与此相关的任何内容

谢谢

标签: wpfpopuptouch

解决方案


我刚刚启动了这段代码:

<Window 
    x:Class="WpfApp1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Click="ButtonBase_OnClick" Width="50" Height="40" HorizontalAlignment="Left">Show</Button>
        <Button Width="50" Height="40" HorizontalAlignment="Right">None</Button>
        <Popup x:Name="MyPopup" Width="200" Height="100" IsOpen="True" StaysOpen="False" >
            <Border Background="Red" Width="50" Height="50" ></Border>
        </Popup>
    </Grid>
</Window>


private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
    MyPopup.IsOpen = true;
}

即使我使用触摸设备(在当前最新的 Windows 版本上)它也能正常工作。您的代码中可能还有其他一些问题,但要回答您的问题:

我只是询问触摸和鼠标输入之间的 WPF 焦点更改是否不同

不,不是的。请检查我的简单代码或检查您的应用程序在其他触摸设备上是否正常工作。也许您正在自己处理某个地方的触摸事件?


推荐阅读