弹出窗口没有关闭触摸

时间:2018-05-18 07:46:59

标签: wpf popup touch

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

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

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

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

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

由于

2 个答案:

答案 0 :(得分:0)

我刚推出了这段代码:

<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焦点变化是否有所不同

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

答案 1 :(得分:0)

我不得不承认,我还没有测试乔纳森·龙(Jonathan Dragon)提出的解决方案。

我在寻找类似问题的解决方案时遇到了这个问题(也许)。为了能够在触摸界面上的某些项目上显示工具提示,我们侦听该项目的MouseUp和TouchUp事件,在这种情况下,将显示一个包含工具提示信息的弹出窗口。

我们使用附加的属性来设置工具提示,并且对于使用此功能的所有项目,弹出窗口将以不同的内容重复使用。

我体验到,如果我打开弹出窗口,然后单击空白将其关闭,则一切正常。

如果我打开弹出窗口,然后单击一个按钮(带有命令的东西),则弹出窗口的确消失了,但是所有按钮都没有响应,直到我再次打开该弹出窗口并单击空白将其关闭。

我只是在阅读Popup的“ StaysOpen”属性,所以...

如果在System.Windows.Controls.Primitives.Popup控件外部发生鼠标或键盘事件时System.Windows.Controls.Primitives.Popup控件关闭,则为

false。默认值为true。

它没有特别提到触摸事件,而键盘和鼠标事件是。 此消息可能表明弹出窗口对触摸事件的反应可能不同。