2012-04-12 17 views
0

Ich verwende das Surface SDK für die Multitouch-Unterstützung. Ich brauchte zwei Schieber in der gleichen Zeit zu bewegen ...Wie Deaktivieren der Trägheit mit Surface SDK?

ich einige SurfaceSlider erstellt haben, funktioniert gut, außer dass die Steuer tun einige Trägheit nach der Bewegung ...

Gibt es eine Möglichkeit zu deaktivieren Trägheit? Ich habe über das Internet gesucht und ich habe nichts gefunden ... sie bieten keine Option oder ähnliches ...

Wenn Sie mehr Informationen benötigen, um mein Problem zu lösen, sagen Sie mir einfach ...

Dank

UPDATE: ich habe versucht, meinen eigenen Schieber so zu machen, aber es funktioniert nicht ...

public class WtoSurfaceSlider : SurfaceSlider 
{ 

    #region " Ctors " 
    static WtoSurfaceSlider() 
    { 
     // Override metadata with style defined in themes xaml 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(WtoSurfaceSlider), new FrameworkPropertyMetadata(typeof(WtoSurfaceSlider))); 
    } 

    public WtoSurfaceSlider() 
    { 
     Name = "New" + GetType().Name; 
    } 
    #endregion 

    #region " Method " 

    protected override void OnManipulationDelta(ManipulationDeltaEventArgs e) 
    { 
     if (e.IsInertial) 
     { 
      e.Complete(); 
      e.Handled = true; 
     } 
    } 

    #endregion 

} 

EDIT

Schließlich fand ich meine Antwort mit dem Kommentar von Eli Arbel. Ich deklariere meinen SurfaceSlider in einer Ressourcen-XAML-Datei, also habe ich keine .cs. So funktioniert dies gut für mich:

public class WtoSurfaceThumb : SurfaceThumb 
{ 

    #region " Ctors " 

    static WtoSurfaceThumb() 
    { 
     // Override metadata with style defined in themes xaml 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(WtoSurfaceThumb), new FrameworkPropertyMetadata(typeof(WtoSurfaceThumb))); 
    } 

    public WtoSurfaceThumb() 
    { 
     Name = "New" + GetType().Name; 

     PreviewFlicked += new FlickEventHandler(WtoSurfaceThumb_PreviewFlicked); 
    } 

    #endregion 

    #region " Method " 

    private void WtoSurfaceThumb_PreviewFlicked(object sender, FlickEventArgs e) 
    { 
     e.Handled = true; 
    } 

    #endregion 

} 

Und ich ersetzt alle SurfaceThumb in meiner app von WtoSurfaceThumb.

Antwort

2

Sie können das folgende Ereignis verwenden:

<s:SurfaceSlider s:SurfaceThumb.PreviewFlicked="OnPreviewFlicked" /> 

und markieren als behandelt:

private void OnPreviewFlicked(object sender, FlickEventArgs e) 
{ 
    e.Handled = true; 
} 

Als eine Randnotiz - Sie können einen normalen Schieberegler verwenden, wenn Sie nicht die Schnipselfunktion benötigen. Multitouch ist in WPF 4 integriert.

+0

Ich werde das versuchen. Aber bist du sicher, dass der Slider von WPF 4 Multitouch verwalten kann? Ich habe viele Dinge ausprobiert und ich konnte nie 2 Slider gleichzeitig bewegen, da ist immer einer, der alle Eingaben übernimmt ... – mlemay

+0

Ich kann nicht die erste Zeile schreiben, die s: SurfaceThumb existiert nicht in der gleichen Klammer des SurfaceSlider (für mich), das einzige "Surface" -Objekt, das es mir erlaubt, ist SurfaceScrollViewer – mlemay

+0

Verwenden Sie das Surface 2.0 SDK ? –

0
+0

Muss ich eine Klasse erstellen, die den SurfaceSlider erbt und nur die OnManipulationDelta hinzufügt? – mlemay

+0

Angenommen, Sie haben eine Instanz, sollten Sie in der Lage sein, ein Ereignis an den Event-Handler wie den ersten Link oben zu übergeben. – Trent

+0

Ich habe keine Instanz in meinem Codebehind, und ich will keine, es ist ein generischer Code – mlemay