c# - WPF - 创建颜色网格

标签 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 不会拉伸(stretch)其项目以填充可用宽度的事实......这是 Grid< 的工作...但是无法绑定(bind)网格的列...

XAML 是首选,但我很乐意在必要时回退到 C#。

最佳答案

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

例子:

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

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

关于c# - WPF - 创建颜色网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980025/

相关文章:

WPF 应用程序安全和数据访问——mef 模块化应用程序 MVVM

wpf - 嵌套滚动区域

android-fragments - 我如何初始化片段中onViewCreated之外的viewModel

c# - 在 WPF/MVVM 应用程序启动时加载配置文件/处理错误

.net - WPF 打印速度非常慢

wpf - 具有可编辑集合的 MVVM 示例,其中 View 不直接使用模型类型

c# - 获取不存在的文件

c# - ajax 未知服务器标签 asp scriptmanager

c# - 如何在neo4jclient中调用存储过程?

c# - LINQ on HashSet 与 List 的对比