簡體   English   中英

為什么 ToggleButton 中的命令綁定無法識別觸摸屏輸入?

[英]Why is command binding in ToggleButton not recognizing touchscreen inputs?

平台和應用程序:我在 WPF 應用程序中使用 MVVM 模式。 部署后的應用程序只能通過觸摸屏訪問。 正如 mvvm 模式所暗示的,我使用命令綁定到 ICommands 並附加 RelayCommands。

 <ToggleButton Grid.Row="1" Padding="5 4 4 4" Command="{Binding HomeCommand}" IsChecked="{Binding isCheckedHomeButton, Mode=TwoWay}" Style="{StaticResource SideMenuToggleButton}" Content="{StaticResource FontAwesomeIconHome}"/>

問題:如果按鈕在開始時被單擊或觸摸,則 RelayCommands 被正確觸發和執行。 一段時間后(通常為 2 分鍾),應用程序仍然可以識別按鈕是否已被單擊,但無法識別按鈕是否已被觸摸。

到目前為止我測試的內容:Windows Application EventLog 沒有相關條目。

盡管有 MVVM 命令模式,我還是添加了事件處理程序以確保正確觸發 TouchDown 事件。 應用程序正確響應了所有附加的觸摸輸入。

 PS C:\Temp\DebugLog> Get-Content.\testLog.txt -Wait MouseClickDetected --- 30.10.2019 13:00:20 MouseClickDetected --- 30.10.2019 13:01:10 MouseClickDetected --- 30.10.2019 13:01:11 MouseClickDetected --- 30.10.2019 13:01:11 MouseClickDetected --- 30.10.2019 13:01:11 TOUCHDOWN Detected --- 30.10.2019 13:11:51 TOUCHDOWN Detected --- 30.10.2019 13:11:51 TOUCHDOWN Detected --- 30.10.2019 13:11:52 TOUCHDOWN Detected --- 30.10.2019 13:11:52 TOUCHDOWN Detected --- 30.10.2019 13:11:52 TOUCHDOWN Detected --- 30.10.2019 13:11:52

所以問題只發生在命令綁定上。

我怎么知道,為什么綁定的命令不是由觸摸觸發的? 觸摸屏輸入首先起作用是幸運的嗎?

不久前我遇到了類似的問題。 我還不能重現您的問題,但這里有一個提示。 嘗試使用“PreviewMouseDown”,而不是“IsChechked”,然后簡單地添加一個事件處理程序,如下所示:

 private void ToggleButton_PreviewMouseUp(object sender, MouseButtonEventArgs e)
    {
        if (yourToggleButton.IsChecked == true)
        {
            //uncheck task
            yourToggleButton.IsChecked = false;

        }
        else
        {
            //check task
            yourToggleButton.IsChecked = true;
        }
    }

我知道,這不是最好的方式,但是 ToggleButton 有一些問題,我稍后會提供一些更合適的信息(如果你願意的話)。 PreviewMouseDown(或 Up,無論你喜歡什么)應該正確處理觸摸事件。

暫無
暫無

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

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