所以我在ListBox项目模板中有这个Xaml:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="22" Width="Auto">
<Image Margin="-2,0,0,0" Source="{Binding Path=ADsPath, Converter={StaticResource ImxConverter}}" HorizontalAlignment="Left" Width="22" />
<TextBlock Margin="20,3,0,0" Text="{Binding Path=DisplayValue}" Width="Auto" />
<Rectangle Fill="White" Stroke="White" Margin="-2,0,-2,0.5" VerticalAlignment="Bottom" Height="1" Width="Auto" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
这个想法是矩形,在整个ListBox项的底部提供了一条细白线;但是,使用上面的Xaml,它只会延伸到文本,而不是ListBox的整个宽度。
答案 0 :(得分:1)
将宽度设置为“自动”基本上告诉它只要足够大以适应内部的所有内容。我认为您需要将Grid的HorizontalAlignment设置为Stretch才能使其正常工作。
编辑:
我做了一个小样本应用。以下是我将如何做你想做的事情:
在实际的列表框中,我将HorizontalContentAlignment属性设置为Stretch
和
我会将你的网格改为DockPanel:
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel Height="22" HorizontalAlignment="Stretch">
<Rectangle Fill="White" Stroke="White" Margin="-2,0,-2,0.5" DockPanel.Dock="Bottom" Height="1"/>
<Image Margin="-2,0,0,0" Height="20" DockPanel.Dock="Left" Width="22" />
<TextBlock Margin="20,3,0,0" Text="Daniel Manning" DockPanel.Dock="Left"/>
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
答案 1 :(得分:1)
您是否尝试过删除宽度=“自动”? Auto说“只让我成为我需要的大”,在你的情况下,由文本的长度决定。默认为“Stretch”,意思是“嘿容器,帮我一个忙,让我像你一样宽。”