4

在我的应用程序中,每次 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)。

我已经在谷歌中寻找答案,但到目前为止我一直无法找到它!有谁知道如何解决这个问题?

提前感谢您的帮助

4

2 回答 2

4

与其在视图模型中创建 TreeViewItems 列表,不如创建一个对象列表来简单地描述您想要显示的数据,即使它很简单

class Item
{
   public string Header { get;set; }
}

TreeViewItem 已经有一个与之关联的模板。

于 2012-06-12T08:39:35.613 回答
4

您正在绑定已经是 UI 元素的元素(此处为:TreeViewItems)。通常,您将任何对象绑定到您的 itemsSource 和 ItemsContainerGenerator 然后为每个绑定项目创建 TreeViewItems。

这在您的情况下无法完成,您已经拥有 TreeViewItems,因此无法应用模板,这就是您收到此错误消息的原因。

你可以这样解决它:

a) 将 DataObjects 绑定到您的树,而不是 TreeViewItems,它们将自动创建

b) 将您的样式直接分配给您已有的 treeviewItems

另请参阅此链接

于 2012-06-12T08:43:43.427 回答