我在
Windows Phone 8应用程序上的ListBoxItem有一个问题,同时试图让它们在ListBox的所有宽度上伸展.
我的列表框
<ListBox ItemsSource="{Binding Events}" behaviors:ItemClickCommandBehavior.Command="{Binding EventSelectedCommand}" ItemTemplate="{StaticResource EventListTemplateSelector}"/>
它的DataTemplates是一个单独的xaml资源文件:
<DataTemplate x:Key="EventListHeaderTemplate"> <Border HorizontalAlignment="Stretch"> <Grid Height="50"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="6*"/> </Grid.ColumnDefinitions> <Image Grid.Column="0" Source="{Binding ImageUri}" VerticalAlignment="Center" HorizontalAlignment="Center" Height="30"/> <TextBlock Grid.Column="1" Text="{Binding SomeText}" VerticalAlignment="Center" HorizontalAlignment="Left" Foreground="Black"/> </Grid> </Border> </DataTemplate>
我不能得到真正弹力的物品,我不知道问题在哪里.我试图设置ItemContainerStyle HorizontalCOntentAlignment =“Stretch”,它没有工作.我尝试了许多其他组合,似乎只有将边框或网格宽度设置为常量工作,而另一种解决方案的作用是将边框宽度设置为绑定到包含ListBox的ActualWidth,但是我想使用Stretch变种如果可以使它工作.
我在开发商业WP8应用程序时遇到同样的问题,并且让我坚持想知道为什么我的TextBlock在整个宽度上没有完全着色.
使用竞争样式(这适用于任何xaml变体实际上)的方式是明确定义ListBoxItem的样式来处理空间使用.
这给了xaml一个提示,它以这种方式填充(拉伸)到屏幕区域:
<ListBox Name="lbTest" HorizontalContentAlignment="Stretch" > <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate>...</ListBox.ItemTemplate>