xaml – ListBoxItem Horizo​​ntalContentAlignment在ListBox的整个宽度上拉伸

前端之家收集整理的这篇文章主要介绍了xaml – ListBoxItem Horizo​​ntalContentAlignment在ListBox的整个宽度上拉伸前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 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 Horizo​​ntalCOntentAlignment =“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>

否则,xaml解析器默认情况下通过将其自动调整为ListBoxItem的内容来尝试节省空间;给它可怕的透明胶带看.

猜你在找的Windows相关文章