我有一个画布控件,我正在容纳一个形状和一些文字。
<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)找到了一种更好的方法来使文本居中而不使用值转换器
...? :)
答案 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)
您可以将文本框放在画布外面的可视树中,但绝对将它放在相同的大小和位置。然后,您可以在文本块上设置水平和垂直对齐,以使文本看起来像在画布中居中。