ItemsControl是Avalonia中轻量、无默认交互的集合显示控件,需显式设置ItemsSource、ItemTemplate和ItemsPanelTemplate才能正常显示;适用于纯展示场景,如标签栏、评分条等。
Avalonia 中的 ItemsControl 是最基础、最灵活的集合显示控件,它不带默认交互(如选中、滚动、焦点管理),适合做纯展示型列表,比如图形容器、标签栏、自定义评分条、节点连线图等。用好它的关键是:明确数据源、配好模板、选对布局面板。
ItemsControl 本身不提供滚动或选中逻辑,所以它轻量但“裸”。你需要手动指定 ItemsSource(推荐用 ObservableCollection)和 ItemTemplate:
public ObservableCollection Items { get; } = new();
ItemTemplate,否则什么也不显示模板里可以放任意控件组合,支持绑定子属性。常见写法:
或 布局内容
ItemsPanelTemplate 决定所有子项怎么“摆”——这是自定义列表形态的核心:
,再配合 Canvas.Left 和 Canvas.Top 绑定 VM 的 X/Y 属性ItemsControl 不内置 UniformGrid,可改用 Grid + ItemsRepeater 或手动生成行列因为 ItemsControl 没有自带容器元素(如 ListBoxItem),要加交互得靠样式选择器或模板内嵌:
ItemsPanelTemplate 的根面板(如 Canvas)上设 ContextMenu
ContentPresenter,例如:
ItemTemplate 根元素加 PointerPressed 事件,或用命令绑定到 VM 方法基本上就这些。它不复杂但容易忽略 ItemsPanelTemplate 和 ItemTemplate 的强制性——漏掉任一个,界面就空白。