为什么在TouchDown和Click之间忽略RoutedEventArgs.Handled

时间:2014-12-05 16:58:10

标签: wpf touch

我正在尝试使用相同的事件同时支持TouchDownClick

您会注意到以下代码,而不是在绿色和红色之间切换,只是闪烁红色并返回绿色。据我所知,这是因为click事件忽略了Handled的{​​{1}}属性。我需要这个才能同时使用Touch和鼠标。

XAML:

RoutedEvent

代码背后:

<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; } } } (它应该与Click一起使用)的原因是因为我的具体情况,当我这样做时,第一次触摸按钮时没有发生。所有后续触摸工作都很好。这是一个我无法提出的单独问题,因为我无法在一个简单的代码示例中重现它。此外,仅当Windows设置为120 DPI时才会出现此行为。在96 DPI中一切正常。我不知道!

1 个答案:

答案 0 :(得分:0)

Click事件是由MouseUp / TouchUp而不是* Down(除非您更改按钮的ClickBehavior)。这个答案有一个很好的方法来全局阻止促进鼠标事件触摸元素的事件:https://stackoverflow.com/a/19540120/518955