2012-01-25 9 views
3

Treeview(カスタムTreeViewコントロール)から派生したクラスで使用されるTreeviewItem(カスタムTreeViewItem)から派生したクラスがあります。
コントロールのユーザーがデフォルトのデザインタイムコレクションエディタを使用してカスタムTreeViewにアイテムを追加すると、新しく追加されたアイテムにデフォルト名(MyNode1、MyNode2など)を追加し、そのアイテムをXAMLで作成します。
これを行う方法に関するアイデアはありますか?
ツールボックスからコントロールをドロップすると、デフォルトの名前が割り当てられていることに気付きました。可能であれば、ツリーノードクラスに対してこの既存のメカニズムをVisual Studio 2010で再利用したいと思います。カスタムTreeViewItemの名前を自動生成する

+1

これは確かに必要な答えではありませんが、難しいようです。これは、あなたのNameプロパティを書き込む何らかの種類のVSアドインを意味するかもしれません。ところで、なぜあなたはすべてのノードに名前が必要ですか? – NestorArturo

+0

Blendには、「作成時にインタラクティブな要素に自動的に名前を付ける」というオプションがありますが、Visual Studioには同等のオプションがないと思います。 [リンク](http://msdn.microsoft.com/en-us/library/gg413373.aspx#ExpressionBlend) – theartwebreathe

+0

なぜですか?名前に基づいてノードを異なる方法で扱う場合は、ノードを作成するときにIDまたは他の識別子を指定する時間が必要です。 – Rachel

答えて

1

TreeViewsおよびTreeViewItemは、ユーザーインターフェイスコントロールであり、保存する必要のある種類の情報を格納するために使用しないでください。その代わりに、情報を格納する階層データ型を作成し、TreeView.ItemsSourceプロパティにバインドし、HierarchicalDataTemplateを使用して希望のデータを表示する必要があります。

TreeViewこのようにして、ビューモデルまたはコードビハインドのバインドされたコレクションに新しいデータ型オブジェクトを追加するだけで、アイテムを追加できます。コレクションに追加する前に、必要な値をオブジェクトに割り当てることができます。コレクションには、すべてアンミック時にアクセスできます。

+0

通常のアプリケーションでは、私が直面している問題はtreeViewのように見えるカスタムコントロールを書くことですが、複雑な機能が追加されています。機能は私のフレームワークの他のアイテムに依存しています。目標は、自分のコントロールのユーザーが自分のページでそれを凍結し、一定の特性を設定していればうまくいくということです。彼がもっと高度なことをしなければならない場合、彼はいくつかのコードを書くこともできますが、ほとんどの時間は、XAMLのコントロールを編集する/エディタを使うだけで十分です。彼はHDTやデータモデルのような複雑な細部について心配する必要はありません。 – Rayden

+0

'TreeView'をサブクラス化する必要はありますか?あなたは 'Attached Properties'で不思議をすることができます。興味がある場合は、このMSDN [article](http://msdn.microsoft.com/en-us/library/ms749011.aspx)を参照してください。 – Sheridan

+0

概念的には私は必要ありません。添付されたプロパティは、新しいコントロール(ツリービューに基づく)を開発しているので、古いものをデフォルト状態 – Rayden

関連する問題