WPF:缩放网格而不缩放内容

时间:2012-06-14 12:43:42

标签: wpf

是否可以在不缩放内容的情况下对Grid的列和行应用缩放变换?

我希望每个单元格的内容只需调整大小以适合单元格而不进行缩放(例如文本的字体大小保持不变)。

例如,在下面的XAML中,我希望按钮可以调整大小而不是缩放:

<Grid Name="grid1" RenderTransformOrigin="0.5, 0.5">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="300" />
                <ColumnDefinition Width="300" />
                <ColumnDefinition Width="300" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="80"/>
                <RowDefinition Height="80"/>
            </Grid.RowDefinitions>
            <Grid.RenderTransform>
                <ScaleTransform ScaleX="{Binding Value, ElementName=slider1 }" ScaleY="{Binding Value, ElementName=slider1 }"
                                />
            </Grid.RenderTransform>
            <Button Content="Button3" Margin="6" Name="button3" />
            <Button Content="Button4" Grid.Column="1" Margin="6" Name="button4" />
            <Button Content="Button5" Grid.Column="2" Margin="6" Name="button5" />
            <Button Content="Button6" Grid.Column="0" Grid.Row="1" Margin="6" Name="button6" />
</Grid>

1 个答案:

答案 0 :(得分:0)

使用您正在应用的方法,这是不可能的,因为转换也将应用于所有子控件的渲染。

但是,根据代码的外观,您希望根据滑块的位置调整网格列的大小。一种更简单的方法是将所有列设置为Width="*"(这将使每列具有相等宽度的效果),删除变换,并将网格的宽度作为一个整体绑定到滑块(您可能需要调整滑块的范围以适应!)。

这会对RenderTransform产生不同的影响,因为RenderTransform不会影响任何周围的布局,并且会更改Width。发表评论,如果这将是一个问题,也许还有另一种解决方案......