2

私はTreeView、ユーザーが複雑なデータ構造をより簡単にナビゲートできるようにするためにを使用しています。ユーザーがツールバーのボタンをクリックしてデータ構造に新しいアイテムを追加できるように、アプリケーションに機能を追加しようとしています。この新しいアイテムには3つのレベルがあり、それぞれに1つのアイテムがあります。最下位のアイテムを選択したいのですが。

データの追加は問題ではありませんTreeView。特定のにバインドされているコレクションに新しいアイテムを追加するだけです。を手で閲覧してアイテムを検索できるTreeViewので、追加が機能することがわかります。ここで、プログラムで新しいアイテムの選択を設定したいと思います。したがって、ユーザーは要素のデフォルト設定をすぐに変更できます。

私はいくつかのテストを行いましたが、選択の設定は次のような方法で行われることがわかりました。

var obj = TreeView.ItemContainerGenerator
              .ContainerFromItem(selectedObject) as TreeViewItem;
obj.IsSelected = true;

Addメソッドの直後にこのコードを追加してみました。追加関数は新しいオブジェクトを返し、これをselectedObjectに配置します。Addメソッドは、にを追加しObservableCollectionます。これにより、適切なイベントが発生します。

ただし、objは、追加直後は常にnullです。

LayoutUpdatedイベントで選択を設定しようとしましたが、この場合、以前のコードのobj変数は常にnullになります。

ここで何かが足りないのではないかと思います。境界のあるコレクションに新しいアイテムを追加して、そのアイテムを選択する方法について誰かが考えていますTreeViewか?

4

1 に答える 1

2

WPF でのツリービューの使用に関する Josh Smith によるこの記事を読むことをお勧めします。彼は、MVVM パターンを使用して、ニーズに合わせて簡単に調整できる IsSelected プロパティの使用方法を示しています。

于 2009-07-13T09:18:40.703 に答える