Laden...

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

Erstellt von Console32 vor 10 Jahren Letzter Beitrag vor 10 Jahren 665 Views
C
Console32 Themenstarter:in
258 Beiträge seit 2011
vor 10 Jahren
[Erledigt] DeltaManipulation.Scale liefert nicht das gewünschte Ergebnis

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

C
Console32 Themenstarter:in
258 Beiträge seit 2011
vor 10 Jahren

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;
        }