我有一個Canvas元素,包含在ScrollViewer中,我正在使用ScaleTransform進行縮放。但是,我希望能夠在縮放操作完成後將查看器的滾動位置保持在畫布的相同部分上。目前,當我縮放畫布時,查看器的滾動位置停留在原來的位置,用戶正在查看的位置丟失。WPF縮放畫布並保持滾動位置
我仍然在學習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>
上面的鏈接提供了大量的細節,但是下載已經移動到此頁面的鏈接:http://blogs.windowsclient.net/joeyw/archive/2009/06/02/pan-and-zoom- updated.aspx –
我有興趣瞭解這一點,但這兩個鏈接都被打破了。雖然我在CodeProject上找到了一篇文章(http://www.codeproject.com/KB/WPF/DeepZoom.aspx)。 – Tony