WPF: событие нажатия не вызывается на сенсорном экране - PullRequest
0 голосов
/ 19 декабря 2018

Я не могу понять, почему наши сенсорные устройства не работают должным образом в новых окнах.

Я создал пример, который воспроизводит ошибку здесь:

MainWindow.xaml :

<Window 
    x:Class="touchTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="400" Width="400">
    <StackPanel>
        <TextBox Text="{Binding Integer}" FontSize="48" />
        <TextBox Text="{Binding Integer}" FontSize="48" />
    </StackPanel>
</Window>

MainWindow.xaml.cs :

public partial class MainWindow
{
    public MainWindow()
    {
        InitializeComponent();

        DataContext = new ViewModel();
    }
}

ViewModel.cs :

public class ViewModel
{
    private int _integer;

    public int Integer
    {
        get => _integer;
        set
        {
            _integer = value;
            new DialogWindow().ShowDialog();
        }
    }
}

DialogWindow.xaml :

<Window
    x:Class="touchTest.DialogWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="200" Width="200">
    <Grid>
        <Button Content="Close" Click="OnClick" />
    </Grid>
</Window>

DialogWindow.xaml.cs :

public partial class DialogWindow
{
    public DialogWindow()
    {
        InitializeComponent();
    }

    private void OnClick(object sender, RoutedEventArgs e)
    {
        Close();
    }
}

Когда в одном из текстовых полей изменилось содержимое,и вы используете сенсорный, чтобы сфокусировать другое текстовое поле, появится DialogWindow.Теперь проблема возникает, и мы должны нажать (коснуться) кнопку закрытия несколько раз (и т. Д. 9 раз на одном из наших устройств), прежде чем произойдет событие щелчка и диалоговое окно закроется.

TouchDown событие работаетдолжным образом.Мы также экспериментируем с другими элементами, кроме Button, например TextBox.Поэтому переключение на событие TouchDown не является решением.Все в новом окне кажется глючным.

1 Ответ

0 голосов
/ 19 декабря 2018

Попробуйте использовать событие Tunneling TouchUp следующим образом:

<Button Content="Close" Click="OnClick" PreviewTouchUp="OnClick" />
...