Пользовательский элемент управления Windows Phone не растягивается в ListBox - PullRequest
4 голосов
/ 08 января 2012

Я хочу, чтобы элементы внутри ListBox заполняли все выделенное пространство. Но они этого не делают. Они используют только необходимое им пространство.

ListBox выглядит следующим образом:

<ListBox x:Name="StripesList" Grid.Row="1">
  <ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
      <Setter Property="HorizontalAlignment" Value="Stretch"/>
      <Setter Property="Margin" Value="0,4,0,4"/>
    </Style>
  </ListBox.ItemContainerStyle>
</ListBox>

И пользовательский элемент управления, связанный как ListBox Item:

<UserControl x:Class="Blip.UI.Controls.StatusStrip"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    HorizontalAlignment="Stretch">

    <Grid HorizontalAlignment="Stretch">
           <Grid.RowDefinitions>
               <RowDefinition Height="*" MinHeight="76" />
               <RowDefinition Height="20" />
           </Grid.RowDefinitions>
           <Grid.ColumnDefinitions>
               <ColumnDefinition Width="64" />
               <ColumnDefinition Width="*" />
           </Grid.ColumnDefinitions>

           <Image Grid.Column="0" Grid.Row="0" Width="64" Height="64"/>

           <TextBlock Grid.Column="1" Grid.Row="0" Text="Test"/>

           <Grid Grid.ColumnSpan="2" Grid.Row="1">
               <StackPanel Orientation="Horizontal" VerticalAlignment="Bottom">
                   <Image Source="/Resources/1.png" Width="18" Height="18"/>
                   <TextBlock Text="Test" VerticalAlignment="Center" />
               </StackPanel>
           </Grid>
    </Grid>
</UserControl>

Я ошибаюсь?

Ответы [ 2 ]

13 голосов
/ 08 января 2012

Вам необходимо установить HorizonatalContentAlignment на Stretch.

<ListBox x:Name="StripesList" Grid.Row="1">
  <ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
      <Setter Property="HorizontalAlignment" Value="Stretch"/>
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
      <Setter Property="Margin" Value="0,4,0,4"/>
    </Style>
  </ListBox.ItemContainerStyle>
</ListBox>

Это потому, что в противном случае контент просто занимает необходимое место, а не использует все доступное пространство.

2 голосов
/ 08 января 2012

Устанавливаем HorizontalContentAlignment, ListBoxItems уже растягиваем, их содержимое нет.

...