質問

実行時にツリービューを作成しています。いくつかのノード(TreeViewItem)があり、それぞれに名前があります。最初は崩壊します。別のコンボボックスには、すべてのtreeViewItemの名前が表示されます。選択された名前に基づいてTreeViewitemを強調表示する必要があります。私は再帰関数を使用しており、次のようなTreeViewItemコンテナを取得します。

if (parent.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
                continue;

TreeViewItem container = parent.ItemContainerGenerator.ContainerFromItem(child).As<TreeViewItem>();

しかし、そうです

parent.itemcontainergenerator.status = generatorstatus.notstarted

すべての崩壊したアイテムについて。それらのために手動で(拡張せずに)コンテナを生成するにはどうすればよいですか?

役に立ちましたか?

解決

ビジュアルツリーを歩いているときはいつでも、ビューモデルの構築について真剣に考える必要があります。

ビューモデルは、直面している問題の種類を心配することなく、TreeViews機能を増やすことができます。

アプリケーションのビューモデルには、いくつかの追加プロパティがあります

IsSelected

IsExpanded

IsHighlighted

あなたと同様に

Data

次に、(ItemContainerStyleを使用して)発行され、ハイライト化され、ツリービューイテムに拡張され、これらのビューモデルのコレクションを作成したので、ビューモデルで検索を行い、プロパティを設定することができます。ビューモデルが応答し、スタイルへのバインディングのために、必要に応じてtreeViewItemを強調します。また、上記のすべてのノードを展開するようなファンキーなこともできます。ツリービューはこれに応答します。

ツリービューと組み合わせるとビューモデルは、はるかに柔軟性が得られ、視覚的なツリークロールエクササイズを停止します(これはハックであり、汚れていると感じます)

がここにあります ViewModelとTreeViewに関する良い記事...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top