边框无法调整大小到Textblock

时间:2015-09-22 20:27:08

标签: c# xaml windows-phone-8.1 emoticons

试图解决另一个问题中描述的问题:Segoe UI Symbol smiley is sometimes colorful, sometimes not(WP8.1 + XAML),我尝试了以下操作:用Textblock元素包裹Border带圆角(高CornerRadius)。这样我可以改变边框的背景颜色,看起来就像笑脸本身就有背景颜色......差不多。

还有一个小问题我无法绕过我的脑袋:TextBlock的高度似乎超出了我的控制范围。 " Segoe UI符号" (笑脸)我想显示行为,好像它有某种padding阻止边框完全符合图标。我的圆形笑脸周围出现了某种椭圆形的形状......不是我的想法。

我剥离了XAML的裸露精华并在一个新的空白应用程序中玩它(只需将其粘贴到一个新的应用程序中,你应该看到下面的截图):

<Grid>
    <Border Background="Red" Grid.Column="0" 
            CornerRadius="50" BorderThickness="0" 
            HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="&#x1F620;" 
                   FontFamily="Segoe UI Symbol" FontSize="50" 
                   HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Border>
</Grid>

这给你:

enter image description here

知道我可以调整哪些内容吗?

1 个答案:

答案 0 :(得分:2)

问题是文本(表情符号)的高度和宽度不同。您可以通过将自定义样式应用于文本框并更改其填充来执行自定义修复,直到获得所需的结果。它不是一个动态的解决方案,但如果图标的大小是标准的,我认为这个解决方案是可行的。

首先创建一种新风格:

<phone:PhoneApplicationPage.Resources>
    <Style x:Key="CustomTextBlockStyle" TargetType="TextBlock">
        <Setter Property="Padding" Value="10,0,10,3"/>
    </Style>
</phone:PhoneApplicationPage.Resources>

然后将其应用于TextBlock

<Grid>
    <Border Background="Red" Grid.Column="0" 
CornerRadius="50" BorderThickness="0" 
HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="&#x1F620;" 
       FontFamily="Segoe UI Symbol" FontSize="50" 
       HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource CustomTextBlockStyle}" />
    </Border>
</Grid>

结果:

enter image description here

如果你想要这样的话:

enter image description here

尝试使用填充和边距

<Style x:Key="CustomTextBlockStyle" TargetType="TextBlock">
        <Setter Property="Margin" Value="-2,-13,-2,-9"/>
        <Setter Property="Padding" Value="0,0,0,0"/>
</Style>