VariableSizedWrapGrid 内的水平居中项目
Horizontal Center Items inside VariableSizedWrapGrid
我有一个 VariableSizedWrapGrid,以按钮作为项目:
<Page.Resources>
<DataTemplate x:Key="LinkTemplate" x:DataType="local:LinkWeb">
<Button Width="100" Height="100" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="15,15,15,15" Click="Button_Click" >
<Button.Content>
<StackPanel>
<Image Source="{Binding ImageLink}" Margin="8,8,8,8" HorizontalAlignment="Center" Height="{Binding HeightImage}" Width="{Binding WidthImage}"/>
<TextBlock Text="{Binding Text}" TextWrapping="WrapWholeWords" />
</StackPanel>
</Button.Content>
</Button>
</DataTemplate>
</Page.Resources>
...
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Grid.Row="1">
<ItemsControl x:Name="imageContent" ItemsSource="{Binding Enlaces}" ItemTemplate="{StaticResource LinkTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalChildrenAlignment="Stretch" MaximumRowsOrColumns="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
VariableSizedWrapGrid 每行显示两个项目,但这些项目显示为左对齐,如您所见:
我需要 VariableSizedWrapGrid 显示以他的内容为中心的项目,像这样:
知道如何实现吗?
编辑
我试过将 ScrollViewer 居中,是的,项目是 "a little more centered",因为 ScrollViewer 中的 VariableSizedWrapGrid 是居中的,但是,在 VariableSizedWrapGrid 中,项目浮动到左侧,所以项目没有像您可以的那样居中在这张图片中看到:
您可以将 VariableSizedWrapGrid 的 HorizontalChildrenAlignment 属性 值设置为 Center
。它应该有效。
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalChildrenAlignment="Center" MaximumRowsOrColumns="2" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
我有一个 VariableSizedWrapGrid,以按钮作为项目:
<Page.Resources>
<DataTemplate x:Key="LinkTemplate" x:DataType="local:LinkWeb">
<Button Width="100" Height="100" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Margin="15,15,15,15" Click="Button_Click" >
<Button.Content>
<StackPanel>
<Image Source="{Binding ImageLink}" Margin="8,8,8,8" HorizontalAlignment="Center" Height="{Binding HeightImage}" Width="{Binding WidthImage}"/>
<TextBlock Text="{Binding Text}" TextWrapping="WrapWholeWords" />
</StackPanel>
</Button.Content>
</Button>
</DataTemplate>
</Page.Resources>
...
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Grid.Row="1">
<ItemsControl x:Name="imageContent" ItemsSource="{Binding Enlaces}" ItemTemplate="{StaticResource LinkTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalChildrenAlignment="Stretch" MaximumRowsOrColumns="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
VariableSizedWrapGrid 每行显示两个项目,但这些项目显示为左对齐,如您所见:
我需要 VariableSizedWrapGrid 显示以他的内容为中心的项目,像这样:
知道如何实现吗?
编辑
我试过将 ScrollViewer 居中,是的,项目是 "a little more centered",因为 ScrollViewer 中的 VariableSizedWrapGrid 是居中的,但是,在 VariableSizedWrapGrid 中,项目浮动到左侧,所以项目没有像您可以的那样居中在这张图片中看到:
您可以将 VariableSizedWrapGrid 的 HorizontalChildrenAlignment 属性 值设置为 Center
。它应该有效。
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalChildrenAlignment="Center" MaximumRowsOrColumns="2" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>