【问题标题】:Centering Text within a Silverlight Shape using a Canvas使用画布在 Silverlight 形状中居中文本
【发布时间】:2011-05-11 21:49:35
【问题描述】:

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

<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 转换器。然后找到a blog which has code for MbC in SL4,但是在VS2010 Express中打不开项目。

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

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

...? :)

【问题讨论】:

  • WP7 实际上是 SL3,有一些额外的东西不是 SL4。
  • 矩形是您唯一感兴趣的形状吗?
  • 对 WP7 和 SL3 的好评。感谢您为我解决这个问题。 :)

标签: canvas windows-phone-7 centering


【解决方案1】:

改用Border 怎么样,这样您就可以简单地将TextBlock 的水平和垂直对齐属性设置为居中。

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

【讨论】:

  • 我的画布对象中还有其他对象。我没有在此处添加它们以使示例简单,并且它们具有固定的位置。对此感到抱歉。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多