2011-06-10 173 views
1

如何创建水平定向的ItemsControl,其中项目的排列方式与Grid中这两个标签的对齐方式相同?水平居中水平ItemsControl

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <Label Grid.Column="1">Text 1</Label> 
    <Label Grid.Column="3">Text 2</Label> 
</Grid> 

我已经有一个查看项目,所以使用ItemsTemplate可能不是一个选项。

资源

以下是一些关于创建自定义面板的教程和文章。希望这将有助于有人用类似的问题...

UniformGrid for Silverlight
Animate WPF Datatemplate when item added to Listbox?
Creating Custom Panels In WPF
FishEyePanel/FanPanel - Examples of custom layout panels in WPF
WPF - A Constraining Stack Panel

回答

1

关于你可以得到,而无需编写自己的面板是最接近:

<ItemsControl ItemsSource="{Binding TheItems}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="1"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemContainerStyle> 
     <Style> 
      <Setter Property="Control.HorizontalAlignment" Value="Center"/> 
     </Style> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 

请注意,我现在是.NET更少o无法测试以上。

+0

这不会给我我需要的东西。 :-(这就好像在中央“ColumnDefinition”中是“Width =”2 *“'是否可以通过内部使用'Grid'创建面板,而不是实际计算单个元素的位置?I '已经研究过StackPanel的实现,它看起来非常复杂,所以任何漂亮的解决方法都将非常感谢。 – Paya 2011-06-10 15:03:19

+0

你是对的,其中一个解决方案是编写我自己的面板,这是我最终决定做的,所以我会将你的答案标记为已接受。可惜我无法找到更简单的解决方案,构建自定义面板非常复杂。 – Paya 2011-06-20 17:00:06