我希望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>
我犯了什么错误吗?
答案 0 :(得分:13)
您需要将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>
这是因为否则内容只会占用所需的空间而不是使用所有可用的空间。
答案 1 :(得分:2)
设置HorizontalContentAlignment
,ListBoxItems
已拉伸,其内容不会。