我在GridView中遇到放大和缩小问题。实际上,缩放工作正常,但是,我无法向右移动。当我尝试向右平移时,它总是将其向左移动(平移顶部和底部工作正常)。
这是我的代码:
<ScrollViewer MinZoomFactor="1" ZoomMode="Enabled">
<GridView x:Name="gvItems">
<GridView.ItemTemplate>
<DataTemplate>
<Grid BorderThickness="1" BorderBrush="#cfcfcf">
<StackPanel Width="128" MaxWidth="128">
<Image Source="{Binding ImgPath}" Width="128" Height="128" Stretch="UniformToFill"></Image>
<Border BorderThickness="0 1 0 0" BorderBrush="#cfcfcf" Padding="5 0 5 0" Height="32">
<Viewbox StretchDirection="DownOnly">
<TextBlock Text="{Binding Name}" FontSize="16"></TextBlock>
</Viewbox>
</Border>
</StackPanel>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</ScrollViewer>
有什么想法吗?
由于
答案 0 :(得分:0)
我找到了解决方案。
您需要在ScrollViewer中添加 VerticalScrollBarVisibility =“Auto”和 HorizontalScrollBarVisibility =“Auto”,然后将其内容设置为绑定到ScrollViewer的 ViewportWidth 和 ViewportHeight
以下是代码:
<ScrollViewer x:Name="svList" MinZoomFactor="1" ZoomMode="Enabled" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<GridView x:Name="gvItems" Width="{Binding Path=ViewportWidth, ElementName=svList}" Height="{Binding Path=ViewportHeight, ElementName=svList}">
<GridView.ItemTemplate>
<DataTemplate>
<Grid BorderThickness="1" BorderBrush="#cfcfcf">
<StackPanel Width="128" MaxWidth="128">
<Image Source="{Binding ImgPath}" Width="128" Height="128" Stretch="UniformToFill"></Image>
<Border BorderThickness="0 1 0 0" BorderBrush="#cfcfcf" Padding="5 0 5 0" Height="32">
<Viewbox StretchDirection="DownOnly">
<TextBlock Text="{Binding Name}" FontSize="16"></TextBlock>
</Viewbox>
</Border>
</StackPanel>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</ScrollViewer>
我希望这篇文章可以帮助那些发现自己处于类似情况的人。
干杯, 萨姆