2011-08-04 7 views
7

ツリービュー上に手動でデータを格納し、並べ替えを行うノードがあります。ユーザーインタラクションを介して、TreeViewItemのヘッダーが変更され、リスト内の適切な場所に移動する必要があります。TreeViewリストを保持しているWPF

多くのTreeViewItemを作成して親ノードに追加するforeachを繰り返します。選別が必要なのは、すべての子供たちです。次に、SortDescriptionを次のように追加します。

tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending)); 

これはintialリストをソートしますが、私は、ツリービュー項目のいずれかのヘッダーを変更した場合には、アイテムが再びソートしません表示された後。ヘッダーテキストは変更されますが、リスト内の項目の位置は変わりません。

紛失しているものがありますか?

私はリストをクリアして再作成しようとしましたが、これはうまくいきますが、選択したアイテムが変更されたときや、ツリービューアイテムの1つリストをクリアすると、このロジックがすべて呼び出され、リストを再構築した後にプログラムで再選択すると、再びロジックが呼び出されます。

答えて

12

項目コレクションは、ヘッダ編集の後に次のコードを試してみてください....

tviParent.Items.Refresh(); 

を上記のコードは、試行し動作しない場合は、プロパティへの変更

時にリフレッシュする必要があります各編集後のコードは...

tviParent.Items.SortDescriptions.Clear() 
    tviParent.Items.SortDescriptions.Add(new SortDescription("Header", ListSortDirection.Ascending)); 
+0

2番目のオプションはうまくいきました。 – WPFNewbie

+0

うれしい私は助けることができます。 –

+0

あなたが提供した2番目のオプションは、チェックボックスを含むTreeViewで機能しました。ありがとう! –

関連する問題