WPF:在不缩放内容的情况下缩放网格



是否可以在不缩放内容的情况下应用缩放转换网格的列和行?

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

例如,在下面的 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>

使用要应用的方法,这是不可能的,因为转换也将应用于所有子控件的呈现。

但是,根据

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

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

最新更新