【发布时间】:2021-05-09 08:35:18
【问题描述】:
我的 ItemsCONtrol 下面有两个 DataTemplates,一个源,其中包含一个名为 Conduits 的 DataType。
如果我删除 DataTemplates 中的任何一个,那么它可以工作。
两者都出现以下错误。
ArgumentException: Item has already been added. Key in dictionary:
'DataTemplateKey(Drain.Models.Cad.Conduit)' Key being added:
'DataTemplateKey(Drain.Models.Cad.Conduit)'
这两个DataTemplates 之间的唯一区别是,一个从 Conduits 内的 UsPoints 获取数据,另一个从 Conduits 内的 DsPoints 获取数据。
我可以创建两个独立的ItemsControls,但我已经有八个了,我不确定通过创建额外的ItemControls 在性能方面解决这些问题是否有任何危害?
关于我应该如何进行的任何建议?
<ItemsControl x:Name="ConduitHandles">
<ItemsControl.Resources>
<CollectionViewSource x:Key="ConduitHandlesUS" Source="{Binding Path=NetworkMain.Conduits}"></CollectionViewSource>
<DataTemplate DataType="{x:Type cad:Conduit}">
<Polygon
Stroke="{Binding IsSelected, Mode=OneWay, Converter={StaticResource ObjectColour}, ConverterParameter=Handle}"
Fill="{Binding IsSelected, Mode=OneWay, Converter={StaticResource ObjectColour}, ConverterParameter=Handle}"
StrokeThickness="1"
Visibility="{Binding Visible, Mode=OneWay, TargetNullValue='Visible'}"
Points="{Binding UsPoint, Mode=OneWay, Converter={StaticResource HandleConverter}}">
</Polygon>
</DataTemplate>
<DataTemplate DataType="{x:Type cad:Conduit}">
<Polygon
Stroke="{Binding IsSelected, Mode=OneWay, Converter={StaticResource ObjectColour}, ConverterParameter=Handle}"
Fill="{Binding IsSelected, Mode=OneWay, Converter={StaticResource ObjectColour}, ConverterParameter=Handle}"
StrokeThickness="1"
Visibility="{Binding Visible, Mode=OneWay, TargetNullValue='Visible'}"
Points="{Binding DsPoint, Mode=OneWay, Converter={StaticResource HandleConverter}}">
</Polygon>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource ConduitHandlesUS}}"></CollectionContainer>
</CompositeCollection>
</ItemsControl.ItemsSource>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas
ClipToBounds="true">
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
【问题讨论】:
标签: wpf xaml itemscontrol