使用画布在Silverlight形状中居中文本

时间:2010-11-18 08:43:10

标签: canvas windows-phone-7 centering

我有一个画布控件,我正在容纳一个形状和一些文字。

<Canvas x:Name="myCanv">
  <Rectangle x:Name="myRect" Stroke="Gray" Fill="Blue" StrokeThickness="3" Width="675" Height="350"/>
  <TextBlock x:Name="myText"/>
</Canvas>

在我的代码背后,我将在事件发生时更改文本,我认为将文本放在“myRect”的中心是很整洁的。

我在how to center text in a canvas control in WPF app using MultiBinding Converters上发现了一篇很棒的博文。阅读之后,我尝试了WP7只能遇到痛苦!

不幸的是,似乎Silverlight 4(其中WP7 Silverlight是其子集)没有MultiBinding Converters。然后我找到a blog which has code for MbC in SL4,但我无法在VS2010 Express中打开该项目。

有没有人 A)通过值转换器居中的文本

B)找到了一种更好的方法来使文本居中而不使用值转换器

...? :)

2 个答案:

答案 0 :(得分:2)

如何使用Border,这样就可以简单地将TextBlock的水平和垂直对齐属性设置为中心。

<Border BorderBrush="Gray" Background="Blue" BorderThickness="3" Width="675" Height="350">
    <TextBlock Text="Hello" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>

答案 1 :(得分:1)

您可以将文本框放在画布外面的可视树中,但绝对将它放在相同的大小和位置。然后,您可以在文本块上设置水平和垂直对齐,以使文本看起来像在画布中居中。