4

私のアプリケーションでは、treeViewがアイテムをロードするたびにこのエラーが発生します。このエラーにより、アプリケーションのロードが遅くなり、ロードに少なくとも2分かかります。

エラーは次のとおりです。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

既に UI 要素 (ここでは TreeViewItems) である要素をバインドしています。通常、任意のオブジェクトを itemsSource にバインドし、次に ItemsContainerGenerator がバインドされた各アイテムの TreeViewItems を作成します。

あなたの場合、これは実行できません。既に TreeViewItems があるため、テンプレートを適用できません。これが、このエラー メッセージが表示される理由です。

次の方法で解決できます。

a) TreeViewItems ではなく DataObjects を Tree にバインドします。これらは自動的に作成されます。

b)すでに持っているtreeviewItemsにスタイルを直接割り当てます

このリンクも参照してください

于 2012-06-12T08:43:43.427 に答える
4

ビュー モデルで TreeViewItems のリストを作成する代わりに、表示するデータを簡単に説明するオブジェクトのリストを作成します。

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

TreeViewItem には、関連付けられたテンプレートが既にあります。

于 2012-06-12T08:39:35.613 に答える