为什么ToggleButton中的命令绑定无法识别触摸屏输入?

平台与应用程序: 我在WPF应用程序中使用MVVM模式。 部署后的应用程序只能通过触摸屏访问。 正如mvvm模式所建议的那样,我将Command绑定到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应用程序EventLog没有相关条目。

尽管有MVVM Command模式,我还是添加了事件处理程序,以确保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

因此,该问题仅在命令绑定时发生。

我如何弄清楚为什么绑定的命令没有通过触摸触发? 幸运的是,触摸屏输入首先发挥了作用?

qayin123 回答:为什么ToggleButton中的命令绑定无法识别触摸屏输入?

前一段时间,我遇到了类似的问题。我目前无法复制您的问题,但这是一个提示。尝试使用“ PreviewMouseDown”而不是“ IsChechked”,只需添加一个事件处理程序,如下所示:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),actionButton("btn","Click to show current time"),textOutput("temp_text")
)

server <- function(input,output,session) {

  Time <- reactiveVal()
  observeEvent(input$btn,{
    Time(paste0("The time is: ",strftime(Sys.time(),format = "%H:%M:%S")))
  })

  output$temp_text <- renderText({
    Time()
  })

  observeEvent(input$btn,{
    delay(ms = 2000,Time(NULL))
  })

}

shinyApp(ui,server)

我知道,这不是最理想的方式,但是ToggleButton有一些问题,我稍后会提供一些更适当的信息(如果您愿意)。 PreviewMouseDown(或Up,无论您喜欢什么)都应该正确处理触摸事件。

本文链接:https://www.f2er.com/3166664.html

大家都在问