在ListBox中奇怪排列的图像

时间:2014-07-15 16:39:48

标签: c# wpf xaml

我创建了一个ListBox,它有一个如下所示的ItemTemplate:

<ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Height="80" Width="80">
                        <Image Stretch="Uniform" Source="{Binding image.ImageSource}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>

我试图用图片填充列表框(你可能已经注意到了) 它的绑定工作得很好但是,即使我已经将图像设置为网格内部的中心,图像似乎以一种奇怪的方式排列。

这是一个示例图像:

enter image description here

请注意图像右侧是否有一条小蓝线,就好像我有边距一样。

我有一个固定的网格高度和宽度,以保持列表框看起来不错。

我使用以下XAML实现了项目的水平堆栈:

<ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel IsItemsHost="True" />
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>

有谁知道如何让这些图像在网格中居中?

谢谢

2 个答案:

答案 0 :(得分:3)

默认的Aero主题为Padding定义2,0,0,0 ListBoxItems,因此内容左侧有空格。要摆脱它,请定义自己的ListBox.ItemContainerStyle并覆盖它。

类似的东西:

<ListBox.ItemContainerStyle>
    <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Padding"
                    Value="0"/>
    </Style>
</ListBox.ItemContainerStyle>

答案 1 :(得分:0)

您是否尝试过Image的Horizo​​ntalAlignment标签?

<Image HorizontalAlignment="Center" />

如果您需要,还有VerticalAlignment

如果这不起作用,请尝试使用ListBox属性HostizontalContentAlignment

<ListBox HorizontalContentAlignment="Center">