2017-01-09 7 views
1

У меня есть 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 показывает два элемента в каждом ряду, но элементы появляется выровненные влево, как вы можете видеть:

enter image description here

Мне нужно VariableSizedWrapGrid показывает элементы, сосредоточенные в его содержании, как это:

enter image description here

Любая идея о том, как я могу это достичь?

EDIT

Я попытался отцентрируйте ScrollViewer, и, да, пункты «немного больше по центру», потому что VariableSizedWrapGrid внутри ScrollViewer по центру, но, внутри VariableSizedWrapGrid элементы плавают слева, так пункты не сосредоточены, как вы можете видеть на этой картинке:

enter image description here

+0

Почему не просто центрирования ScrollViewer или ItemsControl внутри него? –

+0

Я пробовал центрировать ScrollViewer, и, да, элементы «немного центрированы», потому что VariableSizedWrapGrid внутри ScrollViewer центрирован, но внутри объектов VariableSizedWrapGrid плавают влево, поэтому они не центрированы. Я собираюсь обновить вопрос, чтобы показать это. Спасибо – CarlosTI

+0

@CarlosTI Вы решили свой вопрос по моему решению? Если у вас есть какие-либо другие проблемы в отношении этой проблемы, пожалуйста, сообщите мне об этом. –

ответ

2

вы можете установить значение HorizontalChildrenAlignment имущественного VariableSizedWrapGrid в Center. Он должен работать.

<ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VariableSizedWrapGrid Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalChildrenAlignment="Center" MaximumRowsOrColumns="2" /> 
     </ItemsPanelTemplate> 
</ItemsControl.ItemsPanel> 

enter image description here

+0

Да, thx! Я тестировал другое странное поведение, если я добавляю больше элементов, чем конфигурация MaximumRowsOrColumns позволяет (в данном случае «2», потому что я пытался использовать 2 столбца и переменное количество строк), переменнаяizegrid сходит с ума, а элементы alion слева. В вашем примере, если вы добавляете больше элементов, элементы по-прежнему центрированы? – CarlosTI