在使用ItemsSource之前,项集合必须为空。 Telerik Treeview

时间:2014-08-22 14:34:18

标签: c# wpf xaml telerik treeview

我在尝试giva我的treeview项目源时遇到此错误 "在使用ItemsSource之前,Items集合必须为空。"

我已经检查了很多解决方案,我似乎找不到解决这个问题的方法。这是我的代码片段:

XAML:

        <HierarchicalDataTemplate x:Key="Category">

            <TextBlock Text="{Binding Name}">
            </TextBlock>

        </HierarchicalDataTemplate>

XAML

<telerik:RadTreeView x:Name="treeview" IsDragDropEnabled="True" HorizontalAlignment="Left" Height="250" Margin="10,10,0,-3" VerticalAlignment="Top" Width="190" IsManipulationEnabled="True" IsLoadOnDemandEnabled="True" LoadOnDemand="treeview_LoadOnDemand" IsExpandOnSingleClickEnabled="True"  ItemTemplate="{StaticResource Category}">               
        </telerik:RadTreeView>

C# - 为树视图提供数据源:

 Data d = new Data();
        treeview.ItemsSource = d.Get_Categories();

C# - 我的数据库查询:

 public List<Category> Get_Categories()
    {

            using (var context = new ProcessDatabaseEntities())
            {
                return context.Category.ToList();
            }

    }

类别只有两个属性,名称和ID。我知道在分配时,itemsource-list不是空的。所以我的XAML代码可能有问题。提前谢谢!

1 个答案:

答案 0 :(得分:0)

我相信你的问题很常见。基本上,您不能同时使用TreeView.ItemsSourceTreeView.Items属性......您必须选择其中一种方式。通常这个问题就会出现,因为开发人员做过这样的事情......:

<TreeView Name="TreeView" ItemsSource="{Binding SomeCollection}" ... />

...然后尝试在后面的代码中执行类似的操作:

TreeView.Items.Add(someItem);

在这种情况下,解决方案是操纵数据绑定集合而不是TreeView.Items集合:

SomeCollection.Add(someItem);

但是,在您的情况下(如果没有看到您的代码,它有点难以猜测),您可能已经完成了第二部分(设置或操纵Items属性)然后尝试设置ItemsSource属性。你的解决方案是一样的......使用一种编辑项目的方法或另一种方法......不是两者兼而有之。