2016-08-03 30 views
0

Ich habe eine InkCanvas über die Vorderseite meiner Anwendung. Ich möchte, dass es nur mit Stylus/Pen-Ereignissen interagiert. Alle anderen Ereignisse sollten an die verschiedenen Steuerelemente unter der Zeichenfläche übergeben werden. Die Absicht ist, dass ich Gesten auf der InkCanvas mit einem Stift erkenne, während andere Manipulationsereignisse von den Steuerelementen unter den InkCanvas gehandhabt werden (z. B. Berührung und Trägheitsmanipulation).Deaktivieren Sie die Touch-Ereignisbehandlung eines InkCanvas in UWP

Derzeit habe ich versucht, manipulationsereignisse zu deaktivieren, sie zu erfassen, handled = false gesetzt. Bis jetzt kann ich nicht die richtige Lösung finden. Irgendwelche Ideen?

+0

* "Ich kann nicht die richtige Lösung finden "* - Es würde helfen zu wissen, was speziell mit Ihrer Lösung nicht stimmt. – IInspectable

Antwort

0

Sie können den Eingabemodus (PointerDeviceType) in den Pointer Ereignisse des InkCanvas, zum Beispiel erkennen:

<ScrollViewer x:Name="scrollViewer" Width="400" Height="400" Background="LightBlue" VerticalAlignment="Center" HorizontalAlignment="Center" 
       PointerPressed="scrollViewer_PointerPressed"> 
    <StackPanel> 
     <Rectangle Height="300" Width="300" Fill="Red"/> 
     <Rectangle Height="300" Width="300" Fill="Black"/> 
    </StackPanel> 
</ScrollViewer> 
<InkCanvas x:Name="inkCanvas" Width="400" Height="400" GotFocus="inkCanvas_GotFocus" VerticalAlignment="Center" HorizontalAlignment="Center" 
      Tapped="inkCanvas_Tapped" PointerPressed="inkCanvas_PointerPressed"/> 

Code hinter:

private void inkCanvas_PointerPressed(object sender, PointerRoutedEventArgs e) 
{ 
    // Accept input only from a pen or mouse with the left button pressed. 
    PointerDeviceType pointerDevType = e.Pointer.PointerDeviceType; 
    if (pointerDevType == PointerDeviceType.Pen) 
    { 
     //TODO: 
    } 
    else 
    { 
     // Process touch or mouse input 
     inkCanvas.Visibility = Visibility.Collapsed; 
    } 
} 

private void scrollViewer_PointerPressed(object sender, PointerRoutedEventArgs e) 
{ 
    PointerDeviceType pointerDevType = e.Pointer.PointerDeviceType; 
    if (pointerDevType == PointerDeviceType.Pen) 
    { 
     inkCanvas.Visibility = Visibility.Visible; 
    } 
    else 
    { 
     // Process touch or mouse input 
     inkCanvas.Visibility = Visibility.Collapsed; 
    } 
}