2015-03-06 9 views
5

Ich habe eine Windows Phone 8.1 App mit einem FlipView. Jedes FlipView-Element repräsentiert eine Zeitschriftenseite (PDF-Seite gerendert in Bitmap mit etwas Overlay).Verwenden von ScrollViewer in einem FlipView

Ich muss Pinch für alle Seiten zoomen aktivieren. Mein FlipView ItemTemplate sieht aus wie diese

<DataTemplate 
     x:Key="SinglePageTemplate"> 
     <ScrollViewer     
      ZoomMode="Enabled"> 
      <Grid> 
       <ProgressRing 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center" 
        IsActive="{Binding IsRendered, Converter={StaticResource BooleanNegateConverter}}" /> 
       <Image 
        Source="{Binding Bitmap}" 
        VerticalAlignment="Stretch" 
        HorizontalAlignment="Stretch"> 
       </Image> 
      </Grid> 
     </ScrollViewer> 

Das Problem, das ist, wenn ich die Seite verkleinern und versuchen Sie es nach rechts zu bewegen, ist es immer „springt“ nach links zurück.

Hier ist ein Video zeigt das Problem: https://dl.dropboxusercontent.com/u/73642/fv.avi

Irgendwelche Ideen, warum und wie man es beheben?

+0

verwendete ich glaube, ich weiß, was hier passiert. Wenn Sie vollständig herausgezoomt sind und versuchen, über den Bildschirm zu wischen, wischen Sie tatsächlich innerhalb des FlipView-Elements statt des übergeordneten Containers. –

+1

Ich hatte ein sehr ähnliches Problem auf Windows 8.1. Fast das gleiche Szenario. Ich habe festgestellt, dass das Einstellen der horizontalen und vertikalen ScrollBarVisibility auf Auto bei ScrollViewer half - aber dann, wenn die PDF-Seite größer als die Bildschirmauflösung gerendert wurde (was normalerweise ist, um auf OK zu zoomen), wurde sie zu groß gerendert. Die andere Sache, die ich tat, war, die maximale Breite des Rasters auf Window.Current.Bounds.Width und die maximale Höhe auf die gleiche Breite multipliziert mit dem Skalierungsfaktor basierend auf dem Seitenformat Ihrer Zeitschrift zu begrenzen. Und dann hat es geklappt. –

+0

So wie es aussieht [snap points] (https://msdn.microsoft.com/library/windows/apps/br209553), könnten Sie versuchen, diese Eigenschaften so einzustellen, dass sie MandatorySingle oder None mögen. –

Antwort

0

In Ihrem Scroll Sie müssen manuell scrollbarvisiblity und Modus aktivieren

<ScrollViewer ZoomMode="Enabled" 
       HorizontalScrollBarVisibility="Visible" 
       VerticalScrollBarVisibility="Visible" 
       HorizontalScrollMode="Enabled" 
       VerticalScrollMode="Enabled"> 
     <Grid> 
      <ProgressRing 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       IsActive="{Binding IsRendered, Converter={StaticResource BooleanNegateConverter}}" /> 
      <Image 
       Source="{Binding Bitmap}" 
       VerticalAlignment="Stretch" 
       HorizontalAlignment="Stretch"> 
      </Image> 
     </Grid> 
</ScrollViewer> 

Sie können auch die Max/MinZoomFactor optional eingestellt zu verhindern Overzoom

0

ich hatte das gleiche Problem. Ich löste es durch angebracht Verhalten mit und HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"

Unten Einstellung der Code für angebracht Verhalten

public class PanAndZoomBehavior : Behavior<ScrollViewer> 
    { 
     protected override void OnAttached() 
     { 
      base.OnAttached();    
      Window.Current.SizeChanged += OnSizeChanged; 
      SetElementSize(); 

     } 

     protected override void OnDetaching() 
     { 
      base.OnDetaching();    
      Window.Current.SizeChanged -= OnSizeChanged; 
     } 

     private void OnSizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e) 
     { 
      SetElementSize(); 
     } 

     private void SetElementSize() 
     { 
      AssociatedObject.Width = Window.Current.Bounds.Width; 
      AssociatedObject.Height = Window.Current.Bounds.Height; 
      if (AssociatedObject.Content != null) 
      { 
       FrameworkElement element = (FrameworkElement)AssociatedObject.Content; 
       element.Width = Window.Current.Bounds.Width; 
       element.Height = Window.Current.Bounds.Height; 
      } 
     } 

    } 

Wenden Sie dieses Verhalten ScrollViewer

Verwandte Themen