2013-11-28 5 views
1

У меня есть IList строк, и я бы хотел разместить каждую кнопку в виде порядка вниз и влево;WPF UniformGrid в обратном порядке

enter image description here

Однако я не могу придумать, как это сделать, поскольку число строк не является конечным, так что я не могу просто использовать сетку с определениями цв/строк. Кто-нибудь пытался это сделать в WPF?

+1

'UniformGrid' этого делать не будет , Вам нужна регулярная 'Grid' и определите прикрепленные свойства каждого элемента' Grid.Row' и 'Grid.Column', также посмотрите на [Помощник Grid Rachel's] (http://rachel53461.wordpress.com/2011/09/ 17/wpf-grids-rowcolumn-count-properties /) –

+0

Черт, это раздражает. Я посмотрю на этого помощника Grid. Благодарю. –

ответ

1

Вы можете сделать это с помощью WrapPanel. WrapPanel обычно не поддерживают справа налево, но вы можете обойти это, щелкая преобразование макета для всей панели, а затем листать ее снова для каждого из детей:

<Window.Resources > 
    <x:Array Type="{x:Type sys:String}" x:Key="theItems" xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
     <sys:String>1</sys:String> 
     <sys:String>2</sys:String> 
     <sys:String>3</sys:String> 
     <sys:String>4</sys:String> 
     <sys:String>5</sys:String> 
     <sys:String>6</sys:String> 
     <sys:String>7</sys:String> 
    </x:Array> 
</Window.Resources> 

<Grid> 
    <ItemsControl Name="itemsControl" FontSize="72" ItemsSource="{StaticResource theItems}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel Orientation="Vertical" HorizontalAlignment="Right"> 
        <WrapPanel.LayoutTransform> 
         <ScaleTransform ScaleX="-1" ScaleY="1" /> 
        </WrapPanel.LayoutTransform> 
       </WrapPanel> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemContainerStyle> 
      <Style TargetType="ContentPresenter"> 
       <Setter Property="ContentTemplate"> 
        <Setter.Value> 
         <DataTemplate> 
          <Button Width="100" Height="100" Margin="10"> 
           <ContentPresenter Content="{Binding}"/> 
          </Button> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="LayoutTransform"> 
        <Setter.Value> 
         <ScaleTransform ScaleX="-1" ScaleY="1" /> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ItemsControl.ItemContainerStyle> 
    </ItemsControl> 
+0

Я действительно делал это похоже на этот путь. Ха-ха. Отмечено как ответ. –

Смежные вопросы