Treeview“在使用ItemsSource之前,Items集合必须为空。”

时间:2016-01-20 18:07:29

标签: c# wpf treeview

如果我在没有<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>

1 个答案:

答案 0 :(得分:0)

根本不清楚为什么您要向控件添加DataTemplate。但很明显为什么你得到例外:你已经将DataTemplate对象添加为TreeView的直接子对象,这使它成为Items集合中的一个项目。它&#34;模板&#34;自然变得完全无关紧要;您告诉控件只将该对象包含在视图中作为元素。

当然,现在Items集合非空,您不能发送ItemsSource属性。

因此异常的修复是&#34;不要这样做&#34;。即停止尝试将DataTemplate元素作为树视图项目列表中的项目。

除此之外,你的问题中没有足够的上下文来说明你应该使用DataTemplate对象的方式。据推测,您打算将其用作树视图中实际数据项的模板的一部分;也许它需要以某种方式纳入HierarchicalDataTemplate

但是如果没有更详细的说明代码现在做什么以及你想要它做什么,以及你提供一个好的Minimal, Complete, and Verifiable example清楚地说明你的场景,我不会看到一个好方法解决你的问题的这一部分。如果您在定义数据模板方面仍需要帮助,请发布一个提供必要详细信息的新问题。

相关问题