代码之家  ›  专栏  ›  技术社区  ›  Grokys

WPF-创建颜色网格

  •  1
  • Grokys  · 技术社区  · 15 年前

    我有一个wpf中的viewModel,它看起来像这样:

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

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

    所以如果 Colors 包含的 { Colors.Red, Colors.Green, Colors.Blue } 然后我需要三列,每列占控件宽度的三分之一,每列的颜色都要适当。

    最好的方法是什么?它似乎适合 ItemsControl 除了一个事实 项目控制 不拉伸其项以填充可用宽度…这是为 Grid …但网格的列不能绑定…

    XAML是首选,不过我很高兴在必要的时候回到C。

    1 回复  |  直到 13 年前
        1
  •  4
  •   Aviad P.    15 年前

    你可以使用 UniformGrid . 一个统一的网格完全适合您的需要,它根据包含的子元素的数量添加单元格。

    例子:

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

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