我有一个TextBlock,我希望在30px宽的用户控件中垂直显示。使用RenderTransform将TextBlock控件旋转90°。
当我将它与30px的翻译结合起来时,旋转似乎很正常,但TextBlock的实际内容在看起来像是30px时会被截断。
看起来Text正在以父对象的30px宽度呈现,然后进行转换。
<UserControl x:Class="Xyz.Controls.FooControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="300" d:DesignWidth="30">
<Grid x:Name="LayoutRoot">
<Grid Name="barGrid" Background="#BFFFFFFF">
<Ellipse Width="30" Height="30" Fill="Red" HorizontalAlignment="Center" VerticalAlignment="Top" />
<TextBlock Name="barText" Text="88.8°"
Width="50"
Height="30"
Foreground="#FF3535C4">
<TextBlock.RenderTransform>
<CompositeTransform Rotation="90" TranslateX="30"/>
</TextBlock.RenderTransform>
</TextBlock>
</Grid>
</Grid>
</UserControl>
在Visual Studio的截图中,预期文本仅显示29px。
Expression Blend和模拟器中出现相同的问题。
答案 0 :(得分:2)
我找到了一种获得预期布局的方法,但它看起来有点像黑客。
通过在TextBlock(-20px)上设置负左边距等于TextBox宽度(50px)与父节点宽度(30px)的差值,全文垂直显示。
E.g。
<TextBlock Name="barText" Text="88.8°"
Width="50"
Height="30"
Foreground="#FF3535C4"
Margin="0,0,-20,0">
<TextBlock.RenderTransform>
<CompositeTransform Rotation="90" TranslateX="30"/>
</TextBlock.RenderTransform>
</TextBlock>