Центрирование текста в фигуре Silverlight с использованием Canvas - PullRequest
1 голос
/ 18 ноября 2010

У меня есть элемент управления canvas, в котором я размещаю фигуру и какой-то текст.

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

В своем коде я буду менять текст по мере возникновения событий, и я подумал, что было бы аккуратно поместить текст в центр "myRect".

Я нашел отличный пост в блоге о том, как центрировать текст в элементе управления canvas в приложении WPF с использованием MultiBinding Converters . Прочитав его, я попробовал его на WP7, и его встретили боль!

К сожалению, кажется, что Silverlight 4 (из которого WP7 Silverlight является подмножеством) не имеет конвертеров MultiBinding. Затем я нашел блог, в котором есть код для MbC в SL4 , но я не могу открыть проект в VS2010 Express.

Есть кто-нибудь либо
А) Центрированный текст через конвертер значений
или
Б) нашел лучший способ центрировать текст без использования преобразователя значений

...? :)

Ответы [ 2 ]

2 голосов
/ 18 ноября 2010

Как насчет использования Border, вместо этого вы можете просто установить свойства горизонтального и вертикального выравнивания TextBlock в центр.

<Border BorderBrush="Gray" Background="Blue" BorderThickness="3" Width="675" Height="350">
    <TextBlock Text="Hello" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
1 голос
/ 19 ноября 2010

Вы можете просто поместить текстовое поле вне холста в визуальном дереве, но абсолютно расположить его в том же размере и местоположении.Затем вы можете установить горизонтальное и вертикальное выравнивание текстового блока так, чтобы текст выглядел так, как если бы он был в центре холста.

...