我在尝试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代码可能有问题。提前谢谢!
答案 0 :(得分:0)
我相信你的问题很常见。基本上,您不能同时使用TreeView.ItemsSource
和TreeView.Items
属性......您必须选择其中一种方式。通常这个问题就会出现,因为开发人员做过这样的事情......:
<TreeView Name="TreeView" ItemsSource="{Binding SomeCollection}" ... />
...然后尝试在后面的代码中执行类似的操作:
TreeView.Items.Add(someItem);
在这种情况下,解决方案是操纵数据绑定集合而不是TreeView.Items
集合:
SomeCollection.Add(someItem);
但是,在您的情况下(如果没有看到您的代码,它有点难以猜测),您可能已经完成了第二部分(设置或操纵Items
属性)然后尝试设置ItemsSource
属性。你的解决方案是一样的......使用一种编辑项目的方法或另一种方法......不是两者兼而有之。