1

我有一个画布控件,其中包含一个形状和一些文本。

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

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

我发现了一篇很棒的博客文章,介绍了如何使用 MultiBinding Converters 在 WPF 应用程序中的画布控件中居中文本。看完后,我在WP7上试了试,结果很痛苦!

不幸的是,Silverlight 4(其中 WP7 Silverlight 是一个子集)似乎没有 MultiBinding 转换器。然后我找到了一个博客,其中包含 SL4 中的 MbC 代码,但我无法在 VS2010 Express 中打开该项目。

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

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

...?:)

4

2 回答 2

2

不如使用 aBorder代替,这样您就可以简单地将 TextBlock 的水平和垂直对齐属性设置为居中。

<Border BorderBrush="Gray" Background="Blue" BorderThickness="3" Width="675" Height="350">
    <TextBlock Text="Hello" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
于 2010-11-18T09:14:27.050 回答
1

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

于 2010-11-19T12:47:13.043 回答