2010-06-10 154 views

回答

9

下面的示例使用滑塊來控制文本塊的縮放。

<Window x:Class="ZoomTest.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Height="300" Width="300"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
     <Slider Grid.Row="0" Name="_zoom" Minimum="1" Maximum="100" /> 
     <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
      <Grid> 
       <TextBlock Text="DataGrid" Background="Red"/> 
       <Grid.LayoutTransform> 
        <ScaleTransform ScaleX="{Binding Path=Value, ElementName=_zoom}" ScaleY="{Binding Path=Value, ElementName=_zoom}" /> 
       </Grid.LayoutTransform> 
      </Grid> 
     </ScrollViewer> 
    </Grid> 
</Window> 
3

您可以對要放大的元素應用比例變換。

舉例來說,我有一個邊境控制內部的圖像,和輸入/輸出放大,我使用類似以下內容:

<Slider x:Name="MySlider" 
     Minimum="0.25" 
     Maximum="2.0" 
     SmallChange="0.25" 
     LargeChange="0.5" 
     Value="1.0" /> 

<Border> 
    <Border.LayoutTransform> 
     <ScaleTransform ScaleX="{Binding ElementName=MySlider, Path=Value}" 
         ScaleY="{Binding ElementName=MySlider, Path=Value}" /> 
    </Border.LayoutTransform> 
    <Image ... /> 
</Border> 

就我而言,我其實結合MVVM屬性的值,但上面的例子應該可以工作。 ScaleTransform基於滑塊的值,並且均衡地縮放X和Y方向。滑塊允許縮放從原始尺寸的四分之一(0.25)到原始尺寸的兩倍(2.0),原始縮放設置爲原始尺寸(1.0)。

0

這是一個古老的已回答的問題,但上面的XAML解決方案將我引向我需要的項目。共享。

對於DataGrid XAML外編程控制,下面的代碼工作:

dataGrid.LayoutTransform = New Windows.Media.ScaleTransform(ZoomLevelX, ZoomLevelY) 

凡ZoomLevelX和ZoomLevelY是浮點值。對於我的項目,縮放級別在X和Y座標上都是相同的,所以我只用了一個變量來表示兩個參數。此外,我的項目僅限於以下縮放因素:20%,50%,70%,80%,100%,150%,200%,300%。