我有一个使用 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
to Stretch
首先允许 ListBoxItems 拉伸到所有可用空间,以便内联控件可以相应地居中对齐。
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
...
</ListBox>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)