WPF - 创建颜色网格

时间:2009-12-30 12:43:38

标签: c# wpf mvvm colors grid

我在WPF中有一个看起来像这样的ViewModel:

public class SwatchViewModel
{
    public ObservableCollection<Color> Colors { get; private set; }
}

我想显示集合中的每种颜色,将它们放在列中。每个列应占用控件中相同的空间量,并且所有列组合应填充控件的宽度。控件的大小可以任意调整。

因此,如果Colors包含{ Colors.Red, Colors.Green, Colors.Blue },那么我会想要三列,每列占控件宽度的三分之一,每列都适当地着色。

这样做的最佳方式是什么?它似乎适合于ItemsControl,除了ItemsControl没有伸展其项目以填充可用宽度这一事实......这是Grid的工作......但网格的列不能被约束....

XAML是首选,但如果有必要,我很乐意回到C#。

1 个答案:

答案 0 :(得分:4)

您可以使用UniformGrid。统一网格完全符合您的需求,它根据包含的子项数添加单元格。

示例:

<ItemsControl ItemsSource="..." ItemTemplate="...">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="1"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

Rows设置为1会将行数限制为1(duh ...)。