2016-07-19 20 views
0

Ich bin nicht in der Lage PointerPressed, PointerReleased (Any Pointer Event) arbeiten zu lassen.Ereignishandler arbeiten nicht inkCanvas in Windows Universal App

Ich habe diese Zeile Code geschrieben Touch

inkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch; 

aus den Lösungen zu unterstützen, die ich online gefunden, ich habe schon versucht, diese

inkCanvas.PointerReleased += inkCanvas_PointerReleased; 

und diese

inkCanvas.AddHandler(PointerReleasedEvent, new PointerEventHandler(inkCanvas_PointerReleased), true); 

und einfach durch XAML auch:

 <InkCanvas x:Name="inkCanvas" 
PointerPressed="inkCanvas_PointerPressed" 
PointerMoved="inkCanvas_PointerMoved" PointerReleased="inkCanvas_PointerReleased" 
Tapped="inkCanvas_Tapped"> 

Ich teste die App in meinem Gerät (nicht im Emulator). Was fehlt mir?

+0

Fehlende Syntax 'Windows.UI.Core.CoreInputDeviceTypes. ***' für die [Eigenschaften] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.input. inking.inkpresenter.inputdevicetypes.aspx). –

+0

@ChrisW. 'Windows.UI.Core' ist enthalten über' using' Anweisung also glaube das ist nicht das Problem – saira

Antwort

2

Es gibt einige Dinge zu beachten. Erstens: Wenn Sie InkCanvas deklarieren, müssen Sie dem UIElement mitteilen, welchen Eingabetyp es erwarten kann. Es gibt 3 häufig verwendete Arten.

CoreInputDeviceTypes.Mouse (Desktop/Notebooks without touch capability) 
CoreInputDeviceTypes.Pen (Surfacebooks and other pen enabled devices) 
CoreInputDeviceTypes.Touch (all other devices that accept Touch) 

Sie müssen also sicherstellen, dass diese auf Ihrem InkCanvas deklariert sind.

Sobald Sie fertig sind, sehen Sie, ob Ihre pointererevents ausgelöst werden, wenn sie von XAML aufgerufen werden. Wenn es immer noch nicht funktioniert, versuchen Sie es unten.

CoreInkIndependentInputSource core = CoreInkIndependentInputSource.Create(inkCanvas.InkPresenter); 
core.PointerPressing += Core_PointerPressing; 
core.PointerReleasing += Core_PointerReleasing; 
core.PointerMoving += Core_PointerMoving; 

Edit 2: Im Folgenden sind die Methoden für alle 3 Aktionen

 private void Core_PointerMoving(CoreInkIndependentInputSource sender, PointerEventArgs args) 
     { 
      throw new NotImplementedException(); 
     } 

     private void Core_PointerReleasing(CoreInkIndependentInputSource sender, PointerEventArgs args) 
     { 
      throw new NotImplementedException(); 
     } 

     private void Core_PointerPressing(CoreInkIndependentInputSource sender, PointerEventArgs args) 
     { 
      throw new NotImplementedException(); 
     } 

Hoffnung, das hilft.

+0

Wie benutze ich 'Core_PointerReleasing'? Wenn ich es so verwende, wie es ist, bekomme ich an dieser Stelle einen Fehler – saira

+0

Welchen Fehler erhalten Sie? – AVK

+0

'Keine Überladung für 'Core_PointerReleasing' entspricht Delegat 'TypedEventHandler ' \t DrawingDataCollection ' dies erroe – saira