我已将自定义ItemTemplate应用于ListBox控件,但布局存在问题。当列表框滚动到底部并调整大小时,该项目溢出:
看来,如果我向上滚动,布局最终会得到纠正:
如果我删除了设置HorizontalContentAlignment的行,问题就消失了(但是我希望列表项能够拉伸以填充可用空间)...
任何帮助将不胜感激。
<ListBox x:Name="myList" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Background="Lime" TextWrapping="Wrap" Text="{Binding Comments}"/>
<Grid Grid.Column="1" Background="Aqua">
<Button Width="20" Height="20" Content="..."/>
</Grid>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:1)
ItemsPanel
的默认ListBox
是VirtualizingStackPanel
,这严重地解决了Stretch
对齐问题。而是尝试仅使用一列的UniformGrid
。
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>