Отключение точек привязки / возврата в ScrollViewer в XAML
У меня есть сетка с изображением внутри ScrollViewer. Пользователь должен иметь возможность увеличивать и уменьшать изображение. Проблема в том, что когда я увеличиваю изображение, прокручиватель, кажется, возвращается назад к левой стороне изображения, хотя я хочу, чтобы зритель оставался в увеличенном положении. Код XAML выглядит следующим образом
<ScrollViewer Name="ScrollViewer" HorizontalSnapPointsType="None" VerticalSnapPointsType="None" ZoomSnapPointsType="None">
<Grid x:Name="RenderedGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Image x:Name="RenderedImage" Stretch="Fill" />
<canvas:CanvasControl Name="DrawingCanvas" Draw="CanvasControl_Draw" ClearColor="Transparent"/>
</Grid>
</ScrollViewer>
Я думал, что этого будет достаточно, если для SnapPointType будет установлено значение "Нет", но, похоже, это не сработает.
1 ответ
Я написал пост в блоге именно об этой проблеме: почему мой масштабируемый ScrollViewer щелкает изображение слева?
Первая часть проблемы - это сам ScrollViewer, он нуждается в HorizontalScrollBarVisibility
а также VerticalScrollBarVisibility
установите на Авто.
<ScrollViewer ZoomMode="Enabled"
MinZoomFactor="1"
MaxZoomFactor="4"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto">
Чтобы это действительно работало, вам нужно ограничить размер изображения до некоторой ширины / высоты, например:
<Image Source="{Binding ImageUri}"
MaxWidth="{Binding DataContext.PageWidth, ElementName=MyPage}"
MaxHeight="{Binding DataContext.PageHeight, ElementName=MyPage}"/>
Вы можете найти более подробную информацию в моем блоге и полный исходный код на GitHub.