在我的应用程序中,每次treeView加载它的项目时,我都会收到此错误。此错误使我的应用程序在加载时变慢,并且至少需要两分钟才能加载。
错误是:System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='TreeViewItem'
我对树视图的xaml代码是:(我在我的ViewModel上使用VB.net)
<TreeView ScrollViewer.VerticalScrollBarVisibility="Hidden"
ItemContainerStyle="{DynamicResource tviStyle}"
Background="#FFF0F0F0" BorderBrush="#FFE5E2DB"
IsEnabled="{Binding isTreeEnable}"
ItemsSource="{Binding PostcodeLijst}"
Margin="0" Name="dgStamOverzichtPostcode" />
ItemsSource的绑定是一个ObservableCollection(Of TreeViewItem),它是从数据库中填充的。
我已经在谷歌寻找答案,但到目前为止我一直无法找到它!有谁知道如何解决这个问题?
提前感谢您提供任何帮助
答案 0 :(得分:4)
不是在视图模型中创建TreeViewItems列表,而是创建一个简单描述要显示的数据的对象列表,即使它只是像
那样简单。class Item
{
public string Header { get;set; }
}
TreeViewItem已经有一个与之关联的模板。
答案 1 :(得分:3)
您是已经是UI元素的绑定元素(此处为:TreeViewItems)。通常,您将任何对象绑定到itemsSource,然后ItemsContainerGenerator为每个绑定项创建TreeViewItem。
在您的情况下无法完成此操作,您已经拥有TreeViewItems,因此无法应用模板,这就是您收到此错误消息的原因。
你可以这样解决:
a)将DataObjects绑定到Tree,而不是TreeViewItems,它们将自动创建
b)将你的风格直接分配给你已经拥有的treeviewItem
另见link