我一直在使用Canvas for ItemsPanel。
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<Grid>
<Canvas/>
</Grid>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
通过继承ItemsControl覆盖两个方法。
protected override bool IsItemItsOwnContainerOverride(object item)
{
// ABCItem is example. like ListboxItem.
return (item is ABCItem);
}
protected override DependencyObject GetContainerForItemOverride()
{
return new ABCItem();
}
但是当我使用Canvas的ItemsPanel时, 它抛出异常。
无法显式修改用作ItemsControl的ItemsPanel的Panel的Children集合。 ItemsControl为Panel生成子元素。
如何使用带有自定义Itemcontainer的画布使用ItemsPanel?
THX。
答案 0 :(得分:0)
ItemsControl使用ItemsPanelTemplate中的顶级Panel。所以你不应该把Canvas放在网格中:
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>