树视图“在使用 ItemsSource 之前,项目集合必须为空
本文关键字:集合 项目 之前 ItemsSource 视图 在使用 | 更新日期: 2023-09-27 18:31:08
如果我在没有<DataTemplate>
的情况下使用以下代码,它正在工作,并且我只能看到SoftwareVersion
,当我添加时<DataTemple>
抛出异常。知道为什么吗?
ObservableCollection<Note> AllNotes
<TreeView Name="tree" ItemsSource="{Binding Path=AllNotes}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type m:Note}" ItemsSource="{Binding Path=ListIssuesType}">
<TextBlock Text="{Binding Path=SoftwareVersion}" Margin="2" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<DataTemplate DataType="{x:Type m:IssueType}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=IssueTypeName}" />
</StackPanel>
</DataTemplate>
</TreeView>
完全不清楚为什么要向控件添加DataTemplate
。但是很明显为什么你会得到异常:你已经添加了DataTemplate
对象作为TreeView
的直接子对象,这使它成为Items
集合中的一个项目。它的"模板"性质变得完全无关紧要;您告诉控件仅将该对象作为元素包含在视图中。
当然,现在Items
集合是非空的,因此不允许发送ItemsSource
属性。
因此,异常的解决方法是"不要这样做"。 即停止尝试使DataTemplate
元素成为树视图的项目列表中的项目。
除此之外,您的问题中没有足够的上下文来说明您应该如何使用DataTemplate
对象。假定您打算将其用作树视图中实际数据项的模板的一部分;也许它需要以某种方式合并到HierarchicalDataTemplate
中。
但是,如果没有更多关于代码现在做什么以及您希望它做什么的细节,以及您提供一个很好的最小、完整和可验证的示例来清楚地说明您的场景,我看不到解决这部分问题的好方法。如果您在定义数据模板方面仍需要帮助,请发布一个新问题,以提供必要的详细信息。