0

背景

我正在尝试在屏幕底部放置一个 textBlock 控件(下方有一个小边距),并且我还希望为它设置一个背景,这样无论 textBlock 后面显示什么,它都会很容易读书。

在 Android 上,您可以简单地为其设置背景,并告诉它的宽度和高度为 WRAP_CONTENT,以便它只占用所需的空间,但我在 WP8 上找不到类似的东西。

当前状态

这是我创建的 xaml:

...
<Grid >

    <Image x:Name="fullScreenImage" Stretch="Fill"
        Visibility="Collapsed" />

    <TextBlock   HorizontalAlignment="Center" VerticalAlignment="Bottom"
            Margin="0,0,0,200" FontSize="40" x:Name="pictureLabel" TextWrapping="Wrap"
            Foreground="#ff000000" />
</Grid>

问题

由于 textBlock 没有背景属性,我不得不使用包装它的东西。但是,由于它的内容是动态变化的,我不能简单地为它设置一个大小。

问题

现在,我想简单地设置它的背景颜色。

如果可以使用圆角矩形作为背景或 9-patch 图像,我也将不胜感激。

如何实现为 textBlock 设置背景?

4

3 回答 3

3

解决方案非常简单。只需将 HirizontalAlignment 设置为 Left。希望这将适用于您的情况。

<StackPanel HorizontalAlignment="Left">
            <Border Background="#66FFFFFF">                    
                    <TextBlock/>                    
            </Border>
</StackPanel>
于 2013-10-30T09:41:59.167 回答
0

我想出了下一个解决方案,它工作得很好,但我真正想要的是一种设置最小字体和最大字体大小的方法,这样如果有一个单词,字体可能需要一定大小,如果文本太长,字体会变小,都是动态的。

代码:

label.Text = label;
label.Measure(new Size(RenderSize.Width, RenderSize.Height));
border.Width = label.DesiredSize.Width + border.Padding.Left + border.Padding.Right + border.BorderThickness.Left + border.BorderThickness.Right;
border.Height = label.DesiredSize.Height + border.Padding.Top + border.Padding.Bottom + border.BorderThickness.Bottom + border.BorderThickness.Top;

和xml:

<Border BorderBrush="#ff000000" BorderThickness="2" CornerRadius="8" Visibility="Collapsed" Padding="5" Background="#bfff0000" Margin="10,0,10,200" VerticalAlignment="Bottom" x:Name="border">
    <StackPanel>
      <TextBlock FontSize="40" x:Name="pictureLabel" TextWrapping="Wrap" Foreground="#ff000000" />
    </StackPanel>
</Border>
于 2013-02-12T22:07:34.327 回答
0

根据这个问题(这是针对 Silverlight - 但仍然是 xaml),没有办法为TextBlock. 你最好的选择是把你的包TextBlock在一个GridBorder中。

如果 aGrid不起作用,本文建议 aBorder可以解决问题:

一个简单的边框就可以了,并且通过不设置其宽度和高度属性,它将根据 TextBlock 的大小缩小/增长。

于 2013-02-11T15:53:13.340 回答