WPF剪辑布局转换

dldeef67  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(191)

我发现了一个旋转问题,我已经在下面的代码中演示了这个问题。
在正确呈现TextBlock的同时,ContentControl会被裁剪。
它看起来像是将其裁剪为列定义的宽度,然后应用旋转?
我可以通过在ContentControl上设置宽度来解决示例中的问题,但实际上,我不想这样做,因为我需要它自动调整到其内容的宽度。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="30" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <StackPanel>
        <TextBlock Text="Some long text">
            <TextBlock.LayoutTransform>
                <RotateTransform Angle="90" />
            </TextBlock.LayoutTransform>
        </TextBlock>

        <ContentControl>
            <ContentControl.LayoutTransform>
                <RotateTransform Angle="90" />
            </ContentControl.LayoutTransform>

            <Button Content="Some Long Text..." />
        </ContentControl>
    </StackPanel>

    <Button Content="Button"
            Grid.Column="1" />
</Grid>

pieyvz9o

pieyvz9o1#

即使将RotateTransformContentControl中删除,Button也会被裁剪,不是吗?
这是因为StackPanel。请将其替换为一个Panel,该Panel不会以无限的高度或宽度来度量其子项:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="30" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <TextBlock Text="Some long text">
        <TextBlock.LayoutTransform>
            <RotateTransform Angle="90" />
        </TextBlock.LayoutTransform>
    </TextBlock>

    <ContentControl Grid.Row="1">
        <ContentControl.LayoutTransform>
            <RotateTransform Angle="90" />
        </ContentControl.LayoutTransform>

        <Button Content="Some Long Text..." />
    </ContentControl>

    <Button Content="Button"
            Grid.Column="1" Grid.RowSpan="2" />
</Grid>

相关问题