我想覆盖ItemsControl,这样它就不会为每个项目创建容器,而是按原样显示它们。
这可能吗?通过新的派生类型还是xaml?
编辑:为了进一步解释,我想在数据模板中绑定Canvas附加属性,而不是在ItemContainerStyle中进行绑定,但为了使其工作,必须没有容器,... Canvas直接看椭圆/矩形。
原因是,我想要绑定的值可能并不总是具有相同的名称,因为在这种情况下,对于A的类型,Left属性为'Left',对于B的类型,Left属性为'X'。 / p>
我知道我可以在ItemContainerStyle中使用优先级绑定来执行此操作,但更愿意在数据模板中设置绑定。
有可能吗?
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type local:A}">
<Ellipse Width="25" Height="25" Fill="Red"
Canvas.Left="{Binding Left}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type local:B}">
<Rectangle Width="25" Height="25" Fill="Green"
Canvas.Left="{Binding X}"/>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>