Центрирование текстового блока внутри ListBox.ItemTemplate - PullRequest
1 голос
/ 16 апреля 2011

Я занимаюсь разработкой приложения для Windows Phone.

У меня есть следующий код XAML:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ListBox x:Name="GameList" Margin="12" Grid.Row="1">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Margin="10,10,10,5" Height="67" HorizontalAlignment="Center" VerticalAlignment="Center" >
                    <TextBlock Text="{Binding Name}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

Но я не смог установить текстовый блок по центру (по вертикали и горизонтали).

1 Ответ

6 голосов
/ 16 апреля 2011

Это можно сделать двумя способами.

Первое решение - указать ListBox ItemContainerStyle внутри ListBox и установить для свойства HorizontalContentAlignment значение Center.

<ListBox ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Collection}">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

Второе решение - определить стиль и применить стиль к ListBox (чтобы его можно было многократно использовать).

<Style x:Key="ListBoxCenteredItemStyle" TargetType="ListBoxItem">                       
    <Setter Property="HorizontalContentAlignment" Value="Center"/>                    
</Style>

<ListBox 
    ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Collection}"
    ItemContainerStyle="{StaticResource ListBoxCenteredItemStyle}"/>

ItemTemplate изListBox - это просто шаблон данных для отображения каждого элемента данных.Если есть необходимость стилизовать одну строку, ItemContainerStyle - это парень.:)

...