wpf
wpf copied to clipboard
Strange Behavior in Touch Application using WPF
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 Maybe the Manipulation eat your touch event. Reference https://github.com/dotnet/wpf/issues/8223#issuecomment-1916695624
@lindexi What would be the remedy
@Joebu Could you test disable the Manipulation ?
@lindexi does it make sense that the following fixed the issue?
AppContext.SetSwitch("Switch.System.Windows.Input.Stylus.EnablePointerSupport", true);
@Joebu Sorry, I do not think so.
But it did. I didn't mention that I am using an elo touch screen