【发布时间】:2010-03-14 17:18:31
【问题描述】:
我有一个 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>
【问题讨论】: