【问题标题】:Treeview "Items collection must be empty before using ItemsSource."Treeview “在使用 ItemsSource 之前,项目集合必须为空。”
【发布时间】:2016-01-20 18:07:28
【问题描述】:

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

【问题讨论】:

标签: c# wpf treeview


【解决方案1】:

根本不清楚为什么您要向控件添加DataTemplate。但是很清楚为什么会出现异常:您已将 DataTemplate 对象添加为 TreeView 的直接子对象,这使其成为 Items 集合中的一个项目。它的“模板”性质变得完全无关紧要;您是在告诉控件仅将该对象作为元素包含在视图中。

当然,既然Items 集合是非空的,您就不能发送ItemsSource 属性。

因此,该异常的解决方法是“不要那样做”。 IE。停止尝试使 DataTemplate 元素成为树视图的项目列表中的项目。

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

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

【讨论】:

    猜你喜欢
    • 2012-07-24
    • 2010-10-15
    • 2012-03-04
    • 2013-08-08
    • 2012-08-02
    • 2014-01-07
    • 1970-01-01
    • 2010-12-08
    • 2023-03-11
    相关资源
    最近更新 更多