Главная » Разработка для Windows Phone 7 » Конкатенация текста с помощью StackPanel

0

StackPanel с горизонтальной ориентацией может выполнять конкатенацию текста. Это продемонстрировано в проекте TextConcatenation (Конкатенация текста):

Проект Silverlight: TextConcatenation Файл: MainPage.xaml (фрагмент)

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <StackPanel Orientation="Horizontal"

HorizontalAlignment="Center" VerticalAlignment="Center"

Background="{StaticResource PhoneAccentBrush}"> <TextBlock Text="Two " /> <TextBlock Text="plus " /> <TextBlock Text="two " /> <TextBlock Text="equals " /> <TextBlock Text="four!" /> </StackPanel> </Grid>

Вот что получается:

Может показаться довольно глупым выполнять конкатенацию текста таким образом, но на самом деле это очень полезная методика. Иногда в приложении некоторый фиксированный текст определен в XAML и объединен с некоторым переменным текстом, поставляемым из кода или привязки данных. StackPanel обеспечивает составление этого текста без каких-либо лишних пробелов. (В некоторых случаях для этих целей можно использовать TextBlock, задавая в качестве значения его свойства Inlines несколько объектов Run, но, как будет показано в главе 12, Run не может использоваться с привязкой данных.)

Предположим, требуется, чтобы фон немного выходил за рамки текста, получаемого в результате конкатенации. Свойство Margin элемента StackPanel не может этого обеспечить, потому что часть текста находится вне этого элемента. У StackPanel нет свойства Padding (увы!), поэтому придется задавать Margin или Padding по отдельности для каждого элемента TextBlock. Звучит не радостно.

Более простым решением является поместить StackPanel в элемент Border и перенести все параметры выравнивания и Background в этот Border:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Border Background="{StaticResource PhoneAccentBrush}" Padding="12" CornerRadius="2 4" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel 0rientation="Horizontal"> <TextBlock Text="Two " /> <TextBlock Text="plus " />

<TextBlock Text="two " /> <TextBlock Text="equals " /> <TextBlock Text="four!" /> </StackPanel> </Border> </Grid>

И вот мы получаем красивый фон со скругленными углами:

Источник: Чарльз Петзольд, Программируем Windows Phone 7, Microsoft Press, © 2011.

По теме:

  • Комментарии