Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows Phone User Control does not stretch in ListBox

I want the items inside ListBox to fill all allotted space. But they don't. They use only the amount of space they need.

ListBox looks as follows:

<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>

And the user control that is bound as 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>

Am I making any mistake?

like image 821
Marc Andreson Avatar asked Dec 07 '22 17:12

Marc Andreson


1 Answers

You need to set the HorizonatalContentAlignment to 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>

This is because otherwise the content just takes up the space it needs rather than using all the space that's available.

like image 107
ChrisF Avatar answered Dec 11 '22 09:12

ChrisF