Wpf 为什么在着陆和点击之间忽略RoutedEventArgs.处理
我正在尝试支持同一事件的Wpf 为什么在着陆和点击之间忽略RoutedEventArgs.处理,wpf,touch,Wpf,Touch,我正在尝试支持同一事件的着陆和单击 您会注意到,下面的代码不是在绿色和红色之间切换,而是闪烁红色并返回绿色。据我所知,这是因为click事件忽略了RoutedEvent的Handled属性。我需要这两个工作与触摸和鼠标 XAML: 注意:我之所以不单独使用单击(应该与触摸)是因为在我这样做的具体情况下,第一次触摸按钮时什么都没有发生。所有后续的操作都很好。这是一个单独的问题,我不能问,因为我不能在一个简单的代码示例中重现它。此外,此行为仅在windows设置为120 DPI时发生。在96 DPI
着陆
和单击
您会注意到,下面的代码不是在绿色和红色之间切换,而是闪烁红色并返回绿色。据我所知,这是因为click事件忽略了RoutedEvent
的Handled
属性。我需要这两个工作与触摸和鼠标
XAML:
注意:我之所以不单独使用
单击
(应该与触摸
)是因为在我这样做的具体情况下,第一次触摸按钮时什么都没有发生。所有后续的操作都很好。这是一个单独的问题,我不能问,因为我不能在一个简单的代码示例中重现它。此外,此行为仅在windows设置为120 DPI时发生。在96 DPI中,一切正常。我不知道 点击事件是鼠标点击/触碰而不是*触碰的结果(除非您更改按钮的点击行为)。此答案提供了一种很好的方法,可以全局阻止将鼠标事件升级为元素的触摸事件:
<Window x:Class="CodeSpace.WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Background="LightGreen">
<Grid>
<Button Content="Touch Me" HorizontalAlignment="Center" VerticalAlignment="Center" Height="75" Width="75" Click="OnClick" TouchDown="OnClick"/>
</Grid>
</Window>
using System.Windows;
using System.Windows.Media;
namespace CodeSpace.WPF
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void OnClick(object sender, RoutedEventArgs e)
{
Background = (Background.Equals(Brushes.LightGreen)) ? Brushes.LightCoral : Brushes.LightGreen;
e.Handled = true;
}
}
}