You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让含缩放变换内容的Grid自动适配高度?

解决Grid高度未适配缩放后UserControl的纯XAML方案

问题根源在于你使用的RenderTransform是渲染阶段应用的变换,它不会参与布局系统的测量与排列计算,所以Grid始终会以BlockControl未缩放的原始高度来确定自身尺寸。

要实现Grid高度自动适配缩放后的控件,只需将RenderTransform替换为LayoutTransform——它会在布局阶段就应用变换,布局系统会基于变换后的尺寸来计算Grid的高度:

修改后的XAML代码:

<Grid Background="Orange">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <local:BlockControl
        Grid.Column="0"
        MouseDown="BlockControl_MouseDown" 
        DataContext="{Binding Block}">
        <local:BlockControl.LayoutTransform>
            <TransformGroup>
                <ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
            </TransformGroup>
        </local:BlockControl.LayoutTransform>
    </local:BlockControl>
    <TextBlock
        Grid.Column="1"
        Text="{Binding Block.FunctionFullName}"/>
</Grid>

补充说明

  • 如果缩放后控件位置出现偏移,可在TransformGroup中添加TranslateTransform调整位置,比如设置TranslateTransform X="25" Y="25"(数值需根据缩放比例实际调整),让控件保持在预期布局位置。
  • LayoutTransform会触发重新布局,对性能有轻微影响,但对于静态缩放的场景完全适用。

内容的提问来源于stack exchange,提问作者Kamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:24:17