Windows Phone 8.1中ScrollViewer中的图像

时间:2015-07-14 09:08:12

标签: c# windows-runtime windows-phone-8.1 winrt-xaml

我有一个FlipView,当用户在其中滑动时,它会显示传单的页面。我希望用户能够放大页面。 到目前为止我发现的是,如果我将 Image 包装在 ScrollViewer 中并设置 ZoomMode = Enabled ,则用户可以进行缩放。奇怪的是,如果我放大页面的右侧,我从屏幕上抬起手指后会自动回到左侧。知道如何解决这个问题吗?

XAML:

<Grid Name="grRoot">
    <FlipView x:Name="flipView1"
              BorderBrush="Black"
              ItemsSource="{Binding}">

        <FlipView.ItemTemplate>
            <DataTemplate>
                <ScrollViewer ZoomMode="Enabled" MinZoomFactor="1">
                    <Image Source="{Binding url_dotcom}"
                           Stretch="Fill" 
                           Holding="imgHolding"/>
                </ScrollViewer>
            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>
</Grid>

设置FlipView的宽度和高度:

flipView1.Width = Window.Current.Bounds.Width;
flipView1.Height = Window.Current.Bounds.Height;

1 个答案:

答案 0 :(得分:3)

尝试这样的事情:

<Grid Name="grRoot">
    <FlipView x:Name="flipView1"
              BorderBrush="Black"
              ItemsSource="{Binding}">

        <FlipView.ItemTemplate>
            <DataTemplate>
                <ScrollViewer ZoomMode="Enabled" MinZoomFactor="1"
                              HorizontalScrollBarVisibility="Auto"
                              VerticalScrollBarVisibility="Auto">
                    <Image Source="{Binding url_dotcom}"
                           Stretch="Fill" 
                           Holding="imgHolding"
                           MaxWidth="{Binding ElementName=YourPage, Path=DataContext.Width}"
                           MaxHeight="{Binding ElementName=YourPage, Path=DataContext.Height}"/>
                </ScrollViewer>
            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>
</Grid>

这里有两个重要的变化:

  • 将ScrollViewer的Horizo​​ntalScrollBarVisibility和VerticalScrollBarVisibility设置为Auto
  • 将图像的MaxWidth和MaxHeight绑定到Window.Current.Bounds.Width和Window.Current.Bounds.Height,分别通过ViewModel内的Width和Height公共属性公开,ViewModel是该特定页面的DataContext。这适用于FlipView占用整个页面的情况。如果您需要在页面上缩小FlipView,请根据您期望/需要/想要的大小在ViewModel中设置“宽度”和“高度”属性。

编辑: 更多信息,请参阅我的博文Why is my zoomable ScrollViewer snapping the image to the left?