簡體   English   中英

WPF C# Touch 在第 11 次觸摸之前不起作用

[英]WPF C# Touch doens't work until the 11th touch

我已經為自助服務制作了一個 KIOSK 應用程序。 產品列表以編程方式生成。 在每個窗口上,該程序在觸摸屏上都可以正常工作。 除了一個窗口,我必須在它開始工作之前准確地觸摸 10 次。 我試圖重新制作那個窗口,我只在上面放了一個按鈕,但它是一樣的。 如果我禁用手寫筆和觸摸支持: <AppContextSwitchOverrides value="Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport=true"/>比它有效。 但這會禁用觸摸滾動,這是良好用戶體驗所必需的。 如果我使用 touchdown 或類似的東西,它可以工作,但我在那個窗口上有CheckBoxRadioButton ,我無法捕捉到它們上的任何 Touch 事件。 有任何想法嗎?

即使我從我的代碼中清除所有內容,或者我創建一個具有相同名稱的新窗口,它也不起作用......

這是我的 Windows xml:

<Window x:Class="GestbalSelfSalePOS.ProdusComandaDetailsWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GestbalSelfSalePOS"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="ProdusComandaDetailsWindow">
    <Grid>
        <Button Click="BackButton_Click" Content="Button" Margin="120"/>
    </Grid>
</Window>

我的客服:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace GestbalSelfSalePOS
{
    /// <summary>
    /// Interaction logic for ProdusComandaDetailsWindow.xaml
    /// </summary>
    public partial class ProdusComandaDetailsWindow : Window
    {
        public ProdusComandaDetailsWindow()
        {
            InitializeComponent();
        }

        private void BackButton_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}

這就是我打開此窗口的方式:

new ProdusComandaDetailsWindow().ShowDialog();

我面臨的完全一樣。 我發現罪魁禍首是window.ShowDialog() 如果您嘗試,僅用於測試,請僅使用window.Show()它將起作用。 在我看來,由於調用線程在window.ShowDialog()上被阻塞,因此與觸摸相關的事件不會被處理/重新路由。 它與鼠標一起工作正常。 目前,我沒有找到解決方案,只是一個解決方法(一個煩人的):當我顯示新窗口時,之前我在新窗口上設置了Topmost=true並在父窗口上設置了Topmost=false 我還在新窗口上設置了調用者的所有者,所以我可以在關閉新窗口之前將所有者 Topmost 設置為 true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM