2010-11-18 72 views
1

我有我住房的形狀,並且在一些文字畫布控制居中Silverlight的形狀中的文本。使用畫布

<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)找到了一個更好的辦法來居中文本不使用值轉換器

...居中文本? :)

+2

WP7實際上是SL3與一些額外的不是SL4。 – AnthonyWJones 2010-11-18 08:55:42

+0

矩形是您感興趣的唯一形狀嗎? – AnthonyWJones 2010-11-18 08:56:55

+0

WP7和SL3上的良好通話。感謝您爲我清理。 :) – Abel 2010-11-18 16:45:21

回答

1

您可以將文本框放置在可視化樹中的畫布外,但絕對將其放置到相同的大小和位置。然後,您可以在文本塊上設置水平和垂直對齊方式,使文本看起來好像在畫布中居中。

2

如何使用Border來代替,這樣就可以簡單地將TextBlock的Horizo​​ntal和Vertical Alignment屬性設置爲Center。

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

我的畫布對象中還有其他對象。我沒有在這裏添加它們來保持示例簡單,並且他們有固定的位置。對於那個很抱歉。 – Abel 2010-11-18 16:44:08