0

TextBlockを回転させた後、最初の列の高さを2番目の列の高さに一致するように制限しようとしています。

私は次の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>

これにより、次のようにレンダリングされます。

実際の出力

ただし、左側の列の高さが2番目の列の高さに適応するように、この出力を取得しようとしています。

必要な出力

宣言型XAMLを使用してそれを行う方法を知っていますか?つまり。高さやコードビハインドへのバインドはありません。また、コントロールのマージンを指定したくありません。

ありがとう。

4

2 に答える 2

2

コードを少し変更するだけで、必要なものが得られます。

最初:更新されたコード

<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>

2番目:説明

  • 表示TextBlockしている「Linux」はUbuntuにリンクされている必要がありますTextBlock。この場合、それWidthはUbuntuのものと同じでなければならないHeightので、私は以下を追加しました:Width="{Binding ElementName=UbuntuBox, Path=Height}"
  • あなたはこの与えられた幅に合うTextBlock36で持つことはできません。FontSize削除するとデフォルトのままになり、必要に応じて遊ぶことができます

そして、それはあなたが必要とするすべてです!そこにハードコードされた追加のものはありません=)

于 2012-09-25T15:08:44.370 に答える
1

これは私が思いつくことができる最高です。悪い部分はハードコードされた行の定義ですが、ビューボックス内にルートグリッド、つまりその相対的なものがすでにあるため、大きな問題にはならないはずです。

<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>
于 2012-09-25T14:53:55.797 に答える