2017-12-20 9 views
0

Ich habe eine einfache Leinwand mit einer Form im Inneren:Wie kann ein Touch-Ereignis manuell an Canvas oder UIElement in UWP gesendet werden?

<Canvas x:Name="cnvGameOuter" Grid.Row="0" > 
    <Polygon StrokeThickness="1" x:Name="dashRec" Height="210" Width="220" 
ManipulationMode="All" Points="80,0,80,130,0,130,0,200,180,200,180,0" Stroke="#c9c7c7"> 
    </Polygon> 
</Canvas> 

I Touch-Event zu diesem Leinwand senden möchten oder Form, wie wir sie tatsächlich sind zu berühren. Mit anderen Worten, es ist eine Touch-Emulation.

recognizer.GestureSettings = GenerateDefaultSettings(); 
// Set up pointer event handlers. These receive input events that are used by the gesture recognizer. 
element.PointerPressed += OnPointerPressed; 
element.PointerMoved += OnPointerMoved; 
element.PointerReleased += OnPointerReleased; 
element.PointerCanceled += OnPointerCanceled; 

Neben, kann ich PointerRoutedEventArgs Wert wie Position ändern, Gerätetyp, ...? Sie sind schreibgeschützte Eigenschaften. Ich möchte

void OnPointerPressed(object sender, PointerRoutedEventArgs args) 
{ 
    recognizer.ProcessDownEvent(args.GetCurrentPoint(reference)); 
} 

Antwort

0

es ist keine schöne Lösung Stift Verhalten Hand Verhalten drehen, aber es funktioniert

public MainPage() 
{ 
     this.InitializeComponent(); 
     //asign default click 
     cnvGameOuter.PointerPressed += CnvGameOuter_PointerPressed; 
     //or in a xaml 
     //<Canvas x:Name="cnvGameOuter" Grid.Row="0" PointerPressed="CnvGameOuter_PointerPressed" > 

} 

    private void CnvGameOuter_PointerPressed(object sender, PointerRoutedEventArgs e) 
    { 
     OGG_PointerPressed(sender, e); 
    } 

    private void OGG_PointerPressed(object sender, PointerRoutedEventArgs e) 
    { 
     //your action 
    } 

diese setzen, wo Sie es brauchen

OGG_PointerPressed(cnvGameOuter, null); 

oder wenn Sie nicht möchten, eine Verpackung der Sache, die Sie verwenden können

CnvGameOuter_PointerPressed(cnvGameOuter, null); 
WICHTIG

das ein Problem, das Sie nicht PointerRoutedEventArgs definieren können und sollten nicht

+0

Die 'PointerRoutedEventArgs' ist derjenige verwendet werden, die ich im Mittelpunkt stehen. Ich will es mir selbst definieren und übergeben zu' recognizer'. Warum mache ich das? Da der GestureRecognizer von 'Microsofts.UI.Input' nicht unterstützt Multi-Stift, sondern unterstützt Multi-Touch stattdessen. Können Sie eine Gestenerkennung in C# vorschlagen? – quangkid

Verwandte Themen