2015-05-14 60 views
0

的所有內容我有此XAML:放大到畫布

<Grid x:Name="DrawingGrid" Visibility="Collapsed"> 
     <AppBarButton x:Name="ExitDrawingButton" Icon="Cancel" Click="ExitDrawingButton_Click"></AppBarButton> 
     <ScrollViewer x:Name="DScrollViewer" ManipulationMode="All" MaxZoomFactor="2.0" MinZoomFactor="1.0" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" DoubleTapped="DScrollViewer_DoubleTapped" Width="1140" Height="770"> 
      <Canvas x:Name="inkCanvas" Background="Transparent" Width="1140" Height="770"> 
       <StackPanel x:Name="DStackPanel" Orientation="Horizontal" Margin="0,0,0,0"> 
        <Image x:Name="DImage0" HorizontalAlignment="Left" Source="{Binding nextImage}" Width="570" Canvas.ZIndex="0"/> 
        <Image x:Name="DImage1" HorizontalAlignment="Left" Source="{Binding nextImage}" Width="570" Canvas.ZIndex="0"/> 
       </StackPanel> 
      </Canvas> 
     </ScrollViewer> 
    </Grid> 

我使用CanvasManager.cs類上拉Canvas,它是工作的罰款。 現在我需要放大Canvas:放大Canvas(墨水)並將其包含的內容(StackPanel +圖像)放在一起。

doubleTappingScrollViewer含有Canvas我有這樣的方法:

private async void DScrollViewer_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) 
    { 
     Point point = e.GetPosition(DScrollViewer); 
     if (DScrollViewer.ZoomFactor == 1) 
     { 
      await Task.Delay(300); 
      DScrollViewer.ChangeView(point.X, point.Y, 2.0F, false); 
     } 
     else 
     { 
      await Task.Delay(300); 
      DScrollViewer.ChangeView(point.X, point.Y, 1.0F, false); 
     } 
    } 

結果是:只有Canvas(其油墨)縮放和所述StackPanel和其圖像在位置離開,相同的比例, 完整!

我在做什麼錯?

+0

我看了一下您的演示,發現'Images'實際上是坐在不同的'ScrollViewer'('LScrollViewer')內,而'ScrollViewer'('DScrollViewer')負責縮放。這可能是爲什麼這些圖像不受影響。 –

回答

0

你的錯誤是你爲每幅圖像的寬度(Width="570")分配一個恆定值,以便它永遠不會放大或縮小,除非你通過程序改變它的寬度。

改變圖像寬度的最好方法是爲它綁定一個變量值,你可以創建一個轉換器,將canvas的寬度分成兩個(canvas.width/2)並將每個圖像的寬度綁定到這個轉換器.. 然後你的變焦將完美工作。

+0

不正確,我完全刪除了圖像的寬度,並且仍然存在相同的問題。我認爲畫布隱藏了它下面的每個控件。 – yalematta