我有一个显示图像的列表框,需要对图像进行缩放缩放。我使用ScrollViewer来实现捏缩放。
所以我的Listbox数据模板看起来就是这样。
<Border BorderBrush="Transparent"
BorderThickness="1"
Background="{StaticResource WhiteBrush}"
Margin="0">
<Grid VerticalAlignment="Top"
Background="Transparent"
Holding="Grid_Holding"
Margin="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Border BorderBrush="{StaticResource RedBrush}"
BorderThickness="1"
CornerRadius="20"
Width="150"
Height="170"
Grid.Column="0">
<ScrollViewer VerticalScrollBarVisibility="Hidden"
HorizontalScrollBarVisibility="Hidden"
ScrollViewer.BringIntoViewOnFocusChange="True"
ZoomMode="Enabled"
MinZoomFactor="0.8"
MaxZoomFactor="20">
<Image Stretch="Uniform"
Width="150"
Height="170">
<Image.Source>
<BitmapImage UriSource="{Binding MainImage}"
DecodePixelWidth="400"/>
</Image.Source>
</Image>
</ScrollViewer>
</Border>
<StackPanel Grid.Column="1"
Margin="15 0 0 0"
VerticalAlignment="Center">
<TextBlock Text="{Binding Title}"
Style="{StaticResource SavedImageHeadingTextBlockStyle}" />
</StackPanel>
</Grid>
</Border>
问题是当我在ListBox Pinch之外使用相同的代码时缩放效果很好。但在ListBox内部,Pinchzoom不起作用。
任何帮助都会受到谴责。提前谢谢。
答案 0 :(得分:2)
这里的问题是你可能不应该尝试这样做。如果你让它工作,你最终会得到一个非常令人沮丧的UI,你的ListView可能无法滚动,这取决于内部ScrollViewer是否在手指下(和吞咽触摸)。
您的方案中可能有效或无效的方法是使用FlipView(而不是ListView)。 FlipView很好地处理了ItemTemplate中的ScrollViewer,你最终会为用户带来更好的体验。