2015-11-12 1 views
0

У меня есть сетка с изображением внутри ScrollViewer. Пользователь должен иметь возможность увеличения и уменьшения изображения. Проблема в том, что при масштабировании 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 на «None», но это не похоже на работу.

ответ

2

я написал сообщение в блоге именно об этой проблеме: Why is my zoomable ScrollViewer snapping the image to the left?

Первая часть этой проблемы является сама 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.

+0

Отлично! Работает как шарм! Странно, что я не нашел ваш блог после Googling. – stonecompass

Смежные вопросы