2011-01-16 3 views
0

データソースで自分のコントロールを構築したいと思います。このコントロールは単純なバイナリツリーを描画する必要があります:-)wpfでツリー/グラフを描画しますか? [キャンバスを使うか何か?]

私は描画ベースとして何を使用しますか?キャンバスを使うべきか、onRender()のようなペイントイベントメソッドをオーバーライドすべきですか?

ノードはある種のユーザーコントロールでなければなりません。

ありがとうございます。

答えて

1

コンテナを選択するには、必要な機能を使用する必要があります。 絶対配置が必要なときにキャンバスを使用します。

ただし、コントロールはItemsControlであり、ItemsPanelでCanvasを使用できます。結局のところ、キャンバスは単に表示/配置するためのものです。

ItemsControlTemplateを使用して、ノードのDataTemplateを設定できます。

はおそらく、あなたがしなければならないすべては、TreeViewコントロールのテンプレートを作成し、配置パスをオーバーライドするために、TreeViewコントロールをサブクラスであるhierarchical datatemplates at the end of this article

を見てください。

またはい、あなたはそれを行うが、あなたのコードは、現在のテンプレートで(特定の名前を持つ)キャンバスのexistanceに依存していることを認識することができthis approach by Josh Smith

+0

から学ぶことができます。つまり、デザイナーは単にテンプレートを置き換えることはできません。 –

+0

私のコントロールテンプレートでは、私はキャンバスを配置し、私はいくつかのcontentpresentersを配置し、いくつかの行を表示するためにこのキャンバスを使用します。 私もdatasourceプロパティを持っています...しかし、私はどのようにジェネリックプロパティを構築できますか? 同じタイプのオブジェクトをメンバーとして持つリストを持つ任意のオブジェクトでツリーを構築できます。 クラスの人{ list childs; } は、私は私のコントロールがツリーデータソースを検出し、木を描くことをたいと思います...私はいけない 私は何をすべき...データソースのいずれかのタイプを使用するか、またはインターフェイスを紹介したいと思いますか? – user547064

+0

私は私の答えに追加しました。私の推測では、単純にTreeViewコントロールのサブクラスを作成することができます。 –

関連する問題