wpf icon indicating copy to clipboard operation
wpf copied to clipboard

Strange Behavior in Touch Application using WPF

Open Joebu opened this issue 10 months ago • 6 comments

Description

In my touch application developed with WPF, I've encountered a perplexing behavior when interacting with buttons within an ItemsControl. Occasionally, when touching down on one button, the click action seems to be executed on a different button within the ItemsControl.

This issue occurs sporadically and is challenging to consistently reproduce. The buttons within the ItemsControl are utilizing a custom template. I've observed this behavior across multiple touch devices, indicating that it's not specific to a particular hardware configuration.

It's worth noting that this issue seems to be isolated to touch interactions, as it doesn't manifest with mouse input. To aid in diagnosing the problem, I plan to attach a video demonstrating the behavior. In the video, I'll highlight where the touch occurs on the screen and indicate which button erroneously triggers the click event by changing its background color to blue.

https://github.com/dotnet/wpf/assets/12544824/87546f5a-5938-457f-940f-e4f5e4d16303

Reproduction Steps

since its random I just can't reproduce but here's my event handler (originally I used command binding but I thought that it might be a bubbling issue )

 private void Button_Click(object sender, RoutedEventArgs e)
 {
     if (sender is Button button
          && e.OriginalSource is Button source
          && source == button &&
           button.DataContext is MenuDTO menu
          && this.DataContext is ViewModels.MenuSelectionViewModel vm)
          {
                 _ = ChangeColor(source);
                vm.MenuSelectedCommand.Execute(menu);
           }
   }
   

additionally I have set the Button Focusable=False

Expected behavior

the button that is touched should raise the event

Actual behavior

randomly a different button raises the event

Regression?

No response

Known Workarounds

No response

Impact

No response

Configuration

.net: net8.0-windows Windows 10 Enterprise 19045.4046 AMD Ryzen 9 5900X 12-Core Processor 3.70 GHz Issue occurs on different configurations as well

Other information

No response

Joebu avatar Apr 11 '24 22:04 Joebu

@Joebu Maybe the Manipulation eat your touch event. Reference https://github.com/dotnet/wpf/issues/8223#issuecomment-1916695624

lindexi avatar Apr 13 '24 01:04 lindexi

@lindexi What would be the remedy

Joebu avatar Apr 15 '24 15:04 Joebu

@Joebu Could you test disable the Manipulation ?

lindexi avatar Apr 16 '24 01:04 lindexi

@lindexi does it make sense that the following fixed the issue? AppContext.SetSwitch("Switch.System.Windows.Input.Stylus.EnablePointerSupport", true);

Joebu avatar Apr 18 '24 18:04 Joebu

@Joebu Sorry, I do not think so.

lindexi avatar Apr 19 '24 00:04 lindexi

But it did. I didn't mention that I am using an elo touch screen

Joebu avatar Apr 19 '24 04:04 Joebu