簡體   English   中英

限制旋轉的TextBlock大小

[英]Limit rotated TextBlock size

在旋轉TextBlock之后,我試圖將第一列的高度限制為與第二列的高度匹配。

我有以下XAML:

<Viewbox>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>

        <TextBlock
            Grid.Column='1'
            Text='Ubuntu'
            FontFamily='Ubuntu'
            FontSize='36' />

        <TextBlock
            Grid.Column='0'
            Text='Linux'
            FontFamily='Ubuntu'
            FontSize='36'>
            <TextBlock.LayoutTransform>
                <RotateTransform
                    Angle='-90' />
            </TextBlock.LayoutTransform>
        </TextBlock>

    </Grid>
</Viewbox>

這將呈現以下內容:

實際產量

但是,我正在嘗試獲取此輸出,以使左列的高度適應於第二列的高度:

所需的輸出

您是否知道如何僅使用聲明性XAML做到這一點? 就是 沒有綁定到高處或代碼隱藏。 我也不想指定控件的任何邊距。

謝謝。

在代碼中進行少量修改可以為您提供所需的內容:

第一:您更新的代碼

<Grid >
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <TextBlock x:Name="UbuntuBox"
            Grid.Column='1'
            Text='Ubuntu'
            FontFamily='Ubuntu'
            FontSize='36' />

            <TextBlock Width="{Binding ElementName=UbuntuBox, Path=Height}"
            Grid.Column='0'
            Text='Linux'
            FontFamily='Ubuntu'
            >
            <TextBlock.LayoutTransform>
                <RotateTransform
                    Angle='-90' />
            </TextBlock.LayoutTransform>
            </TextBlock>

        </Grid>

第二:說明

  • 您的顯示“ Linux”的TextBlock必須鏈接到Ubuntu TextBlock 在這種情況下,其Width必須與Ubuntu的Height相同,因此我添加了以下內容: Width="{Binding ElementName=UbuntuBox, Path=Height}"
  • 您不能擁有適合此給定寬度的36 FontSizeTextBlock 刪除它會使它保持默認狀態,然后您可以根據需要使用它

這就是您所需要的! 那里沒有硬編碼添加的東西=)

這是我能想到的最好的方法。 不好的部分是硬編碼的行定義,但是因為您已經在視圖框內有了根網格及其相對的根網格,所以它應該不是一個大問題。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="36"/>
    </Grid.RowDefinitions>
    <TextBlock
        Grid.Column='1'
        Text='Ubuntu'
        FontFamily='Ubuntu'
        FontSize='36' />

    <Viewbox Grid.Column='0'>
        <TextBlock
            Text='Linux'
            FontFamily='Ubuntu'
            FontSize='36'>
            <TextBlock.LayoutTransform>
                <RotateTransform
                    Angle='-90' />
            </TextBlock.LayoutTransform>
        </TextBlock>
    </Viewbox>
</Grid>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM