none
Gesten RRS feed

  • Frage

  • Hallo,

    in meinem App möchte ich ein paar Gesten einbauen. Zum eine eine die ausgelösst wird, wenn man vom oberen rand nach unten streicht. Also so wie das System Tray geöffnet wird. Das Grid element soll dann dem Finger folgen und an einer bestimmten stelle stehen bleiben.

    Das selbe würde ich auch gerne von link und rechts machen.

    Wie genau funktioniert das?

    Es ist wichtig das es ausgelösst wird wenn man von außerhalb des Bildschirmes auf den Schrim streicht. Da in der Mitte ein Webbrowser Control sitzt.

    LG Elias


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Montag, 27. Januar 2014 14:42

Antworten

  • Abonniere einfach das MouseMove-Event und setze entsprechend das Margin eines Elements bzw. Canvas.Set*
    private void ContentPanel_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
    {
        var pnt = e.GetPosition(sender as UIElement);//In Relation zum auslösenden Element
        tb.Margin = new Thickness(pnt.X, pnt.Y, 0, 0);//Element verschieben
        tb.Text = pnt.ToString();//Zum testen die Koordinaten ausgeben
    }
    <Grid MouseMove="ContentPanel_MouseMove" Background="Yellow" x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <TextBlock Name="tb" HorizontalAlignment="Left" VerticalAlignment="Top" />
    </Grid>



    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 27. Januar 2014 16:07

Alle Antworten

  • Hallo,
    es gibt verschiedene Events, wie MouseLeftButtonUp und MouseLeftButtonDown. Diese kannst du abfangen und die Koordinaten der Berührung ermitteln. Bei einem Touch-Down speicherst du die die Koordinaten und bei einer Bewegung (MouseMove) oder einem Touch-Up wertest du entsprechend die Bewegung aus. Von außerhalb des Bildschirms geht natürlich nicht. Du kannst höchstens gucken, ob der erste Kontakt in den ersten paar Pixeln vom Rand aus statt fand.

    Zum auslesen der Bildschirmgröße findest du hier Möglichkeiten. Über die Eventargs der Touch-Events kommst du an die Koordinaten heran:

    private void ContentPanel_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        var pnt= e.GetPosition(this);//Das Element angeben, zu dme die Koordinaten ermittelt werden sollen.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 27. Januar 2014 15:35
  • Hallo,

    gut da funktioniert schon mal. Nur wie kann ich dann das Element dem Finger folgen lassen?

    LG Elias


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Montag, 27. Januar 2014 15:45
  • Abonniere einfach das MouseMove-Event und setze entsprechend das Margin eines Elements bzw. Canvas.Set*
    private void ContentPanel_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
    {
        var pnt = e.GetPosition(sender as UIElement);//In Relation zum auslösenden Element
        tb.Margin = new Thickness(pnt.X, pnt.Y, 0, 0);//Element verschieben
        tb.Text = pnt.ToString();//Zum testen die Koordinaten ausgeben
    }
    <Grid MouseMove="ContentPanel_MouseMove" Background="Yellow" x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <TextBlock Name="tb" HorizontalAlignment="Left" VerticalAlignment="Top" />
    </Grid>



    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 27. Januar 2014 16:07
  • Das ganze funktioniert eigendlich ganz gut. Nur es läuft nicht flüssig. Gibt es vielleicht ein Sample.

    LG Elias


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Dienstag, 28. Januar 2014 17:05
  • Hallo,
    ein fertiges Beispiel kenne ich nicht. Ich kann nur soviel sagen, das es auf meinem WinPhone-Emulator flüssig läuft. Ich kann mir auch nicht ganz vorstellen, dass es auf einem Endgerät extreme "Hänger" gibt.

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Dienstag, 28. Januar 2014 20:04