2010-06-10 114 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%。