水平居中水平ItemsControl
问题描述:
如何创建水平定向的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
答
关于你可以得到,而无需编写自己的面板是最接近:
<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无法测试以上。
这不会给我我需要的东西。 :-(这就好像在中央“ColumnDefinition”中是“Width =”2 *“'是否可以通过内部使用'Grid'创建面板,而不是实际计算单个元素的位置?I '已经研究过StackPanel的实现,它看起来非常复杂,所以任何漂亮的解决方法都将非常感谢。 – Paya 2011-06-10 15:03:19
你是对的,其中一个解决方案是编写我自己的面板,这是我最终决定做的,所以我会将你的答案标记为已接受。可惜我无法找到更简单的解决方案,构建自定义面板非常复杂。 – Paya 2011-06-20 17:00:06