我在Windows Phone 8应用程序上遇到了_2927528的问题,同时试图让它们伸展到 ListBox
的所有宽度 .
我的 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"并且它不起作用 . 我已经尝试了许多其他组合,似乎只将Border或Grid宽度设置为常量工作,另一个有效的解决方案是将Border宽度设置为绑定到包含ListBox的ActualWidth,但我想使用Stretch变种如果可以使它工作 .
1 回答
我在XAML遇到了同样的情况,它让我疯狂地想知道为什么我的
TextBlock
没有在整个宽度上完全着色 .使用竞争样式( this works for any of the xaml variants actually )的方法是明确定义
ListBoxItem
的样式以处理空间使用 .这给xaml一个提示,即以这种方式填充(拉伸)到屏幕区域:
否则,xaml解析器默认尝试通过自动调整空间大小来节省空间
ListBoxItem
的内容;给它带来可怕的透明胶带外观 .