3

我想覆盖 ItemsControl,这样它就不会为每个项目创建一个容器,而是按原样呈现它们。

这可能吗?通过新的派生类型或 xaml?

编辑:为了进一步解释,我想在数据模板中绑定 Canvas 附加属性,而不是在 ItemContainerStyle 中进行绑定,但要使其正常工作,就必须没有容器,.. 这样 Canvas直接看椭圆/矩形。

原因是,我想要绑定的值可能并不总是具有相同的名称,因为在这种情况下,Left 属性对于 A 类型是“Left”,而对于 B 类型是“X”。

我知道我可以使用 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>
4

0 回答 0