Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[Erledigt] DeltaManipulation.Scale liefert nicht das gewünschte Ergebnis
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

Themenstarter:

[Erledigt] DeltaManipulation.Scale liefert nicht das gewünschte Ergebnis

beantworten | zitieren | melden

Hallo Community,

Ich versuche gerade eine AttatchedProperty zu schreiben um einem UIElement das Zoomen per Touch zu ermöglicht. Dazu verwende ich das ManipulationDelta Event des UIElements.

Die Scale Property der EventArgs ist jedoch immer gleich (1,1)
Während alle andere Propertys ein nachvollziebares ergebniss ausspucken.

Hier der Code des events.
Sollte ich für Zoom mit etwas anderem arbeiten oder wieso ist das Delta hier immer gleich?


  private void UIElementManipulationDelta(object sender, ManipulationDeltaEventArgs e)
            {
                UIElement uiElement = sender as UIElement;
                if (uiElement != null && e.Manipulators.Count() == 2)
                {
                    Debug.WriteLine(e.DeltaManipulation.Scale.X + ", " + e.DeltaManipulation.Scale.Y );
                }
            }

mfg Console
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Console32 am .
private Nachricht | Beiträge des Benutzers
Console32
myCSharp.de - Member



Dabei seit:
Beiträge: 258

Themenstarter:

beantworten | zitieren | melden

Ich hab nun die Ursache gefunden.

Das UIElement liegt auf einem ScrollViewer welcher den PanningMode auf HorizonzalOnly gestellt hat, entferne ich diese Property funktioniert das ManipulationDelta wie gewünscht.

Der ScrollViewer ändert mir wohl den Mode auf Translate.
Wenn ich von ScrollViewer ableite und OnManipulationStarting überschreibe funktioniert es.

        protected override void OnManipulationStarting(ManipulationStartingEventArgs e)
        {
            base.OnManipulationStarting(e);
            e.Mode |= ManipulationModes.Scale;
        }
private Nachricht | Beiträge des Benutzers