我试图在旋转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进行纯粹的操作? IE浏览器。没有绑定到高度或代码隐藏。我也不想指定控件的任何边距。
感谢。
答案 0 :(得分: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>
第二:解释
TextBlock
显示“Linux”必须与Ubuntu TextBlock
相关联。在这种情况下,其Width
必须与Ubuntu的Height
相同,因此我添加了以下内容:Width="{Binding ElementName=UbuntuBox, Path=Height}"
TextBlock
FontSize
{{1}}。删除它将使其保持默认状态,如果你想要这就是你所需要的!没有硬编码添加的东西=)
答案 1 :(得分: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>