我有一个使用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控件设置为HorizontalAlignment =“ Center”,我认为可以这样做,但是它不起作用。
我究竟做错了什么?
您需要设置HorizontalContentAlignment
为Stretch
首先允许ListBoxItems扩展到所有可用空间,以便可以将内联控件相应地居中对齐。
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
...
</ListBox>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句