我在WPF中有一个看起来像这样的ViewModel:
public class SwatchViewModel
{
public ObservableCollection<Color> Colors { get; private set; }
}
我想显示集合中的每种颜色,将它们放在列中。每个列应占用控件中相同的空间量,并且所有列组合应填充控件的宽度。控件的大小可以任意调整。
因此,如果Colors
包含{ Colors.Red, Colors.Green, Colors.Blue }
,那么我会想要三列,每列占控件宽度的三分之一,每列都适当地着色。
这样做的最佳方式是什么?它似乎适合于ItemsControl
,除了ItemsControl
没有伸展其项目以填充可用宽度这一事实......这是Grid
的工作......但网格的列不能被约束....
XAML是首选,但如果有必要,我很乐意回到C#。
答案 0 :(得分:4)
您可以使用UniformGrid
。统一网格完全符合您的需求,它根据包含的子项数添加单元格。
示例:
<ItemsControl ItemsSource="..." ItemTemplate="...">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
将Rows
设置为1
会将行数限制为1(duh ...)。