У меня есть элемент Canvas, содержащийся в ScrollViewer, который я масштабирую с помощью ScaleTransform. Однако я хочу иметь возможность удерживать положение прокрутки зрителя сфокусированным на той же части холста после завершения операции масштабирования. В настоящее время, когда я масштабирую холст, положение прокрутки зрителя остается там, где оно было, и место, которое просматривал пользователь, теряется.
Я все еще изучаю WPF, и я немного углубляюсь в этом, но я не могу найти хороший способ, основанный на XAML, выполнить то, что я хочу. Любая помощь в этом вопросе будет принята с благодарностью и поможет мне в моем учебном процессе.
Вот код, который я использую ...
<Grid>
<ScrollViewer Name="TrackScrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Canvas Width="2560" Height="2560" Name="TrackCanvas">
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="{Binding ElementName=ZoomSlider, Path=Value}"
ScaleY="{Binding ElementName=ZoomSlider, Path=Value}"/>
</Canvas.LayoutTransform>
<!-- Some complex geometry describing a motor racing circuit -->
</Canvas>
</ScrollViewer>
<StackPanel Orientation="Horizontal" Margin="8" VerticalAlignment="Top" HorizontalAlignment="Left">
<Slider Name="ZoomSlider" Width="80" Minimum="0.1" Maximum="10" Value="1"/>
<TextBlock Margin="4,0,0,0" VerticalAlignment="Center" Text="{Binding ElementName=ZoomSlider, Path=Value, StringFormat=F1}"/>
</StackPanel>
</Grid>