2016-08-03 16 views
0

私のアプリケーションの前面にInkCanvasがあります。 私はそれがスタイラス/ペンイベントとのみ対話したいと思っています。他のすべてのイベントは、キャンバスの下のさまざまなコントロールに渡す必要があります。 他の操作イベントがInkCanvasの下のコントロール(タッチや慣性操作など)で処理されている間に、ペンでInkCanvasのジェスチャーを検出することが意図されています。UWPのInkCanvasのタッチイベント処理を無効にする

現在、私は、操作イベントを無効にしてキャプチャし、処理済み= falseに設定しようとしました。これまでのところ私は適切な解決策を見つけることができません。何か案は?

+0

を*「私は右の解決策を見つけることができません"* - それはあなたの解決策に具体的に何が間違っているかを知るのに役立ちます。 – IInspectable

答えて

0

あなたは、たとえば、InkCanvasPointerイベントで入力モード(PointerDeviceType)を検出することができる:背後

<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"/> 

コード:

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; 
    } 
} 
関連する問題