使用UniformGrid的列表框 - 未居中的项目

时间:2014-02-06 18:26:03

标签: wpf xaml uniformgrid

我使用UniformGrid为ItemsPanelTemplate创建了一个列表框。这是一张照片列表。我希望照片在网格的每个单元格的中心水平居中,但似乎无论我做什么,图像都对齐到每个单元格的左侧。这是我目前的XAML:

<Border BorderThickness="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" DockPanel.Dock="Right">
    <ListBox Name="PhotosListBox" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid IsItemsHost="True" HorizontalAlignment="Center"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding Path=photo}" HorizontalAlignment="Center"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Border>

正如你所看到的,我将DataTemplate中的Image控件设置为Horizo​​ntalAlignment =“Center”,我认为会这样做,但它不起作用。

我做错了什么?

1 个答案:

答案 0 :(得分:10)

您需要将HorizontalContentAlignment设置为Stretch,以便首先允许ListBoxItems延伸到所有可用空间,以便内联控件可以相应地在中心对齐。

<ListBox>
   <ListBox.ItemContainerStyle>
      <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
      </Style>
   </ListBox.ItemContainerStyle>
   ...
</ListBox>