1

Winforms TreeView コントロールにいくつかの階層データがあり、それをプロパティとして公開して、プレゼンターが変更を同期できるようにする必要があります。明確にするために、私はパッシブ ビューパターンを使用しています。ほとんどの WinForm コントロールでは、これは簡単です。コントロール自体は、プレゼンターに簡単に渡すことができるシステム タイプとしてデータを公開します。TreeViews は、複雑であるため、システム タイプに簡単にマップできません。フレームワーク コレクション型を探しましたが、ツリー型は見落とされているようです。(Microsoft は、いくつかの高レベル クラスの内部でツリー構造を使用しているように見えますが、汎用ツリークラスのファミリーを作成しないことを選択しました。)

いずれにせよ、私が公開しようとしているデータの深さは 2 ノードを超えないため、TreeView を使い続けるかどうかさえわかりません。さらに、プレゼンターを TreeNodeCollection に結び付けることを避ける必要があります。

私はすでにいくつかのアイデアを思いつきましたが、SO コミュニティからそれらを跳ね返したかっただけです。

  • ツリーをコレクションのコレクションとして公開します...リストの辞書としましょう。
  • カスタム ツリー構造を作成し、プロセス内のビューに依存関係を導入します。

最上位ノードは平均 5 ~ 10 エントリで、子ノードは理論的には 50 ものヒット数を達成できますが、実際には 3 または 4 を超えることはありません。

助言がありますか?

4

3 に答える 3

3

反対の方向で考える必要があると思います:プレゼンターは階層構造をビューにどのように公開する必要がありますか。また、ビューについては抽象的な言葉で考え、具体的な実装 (この場合は TreeView) に集中しすぎないようにする必要があります。通常、MVP パターンを使用して何かを実装し始めるときは、プレゼンター ロジックを書き始め、同時にビュー インターフェイスを定義します。理想的には、TDD とビューのモック実装を使用してこれを行います。その場合にのみ、具体的なビュー (Windows フォームまたはコントロール) を実装します。

したがって、ビューに渡されるモデルを作成する必要があります。カスタムの階層構造を実装することをお勧めします (複合パターンを参照)。

あなたの場合、ビューの実装は TreeViewNode の Tag プロパティを使用して、TreeView のノードとモデル内の要素をマッピングできます。

于 2009-06-20T17:45:26.977 に答える
0

これがパフォーマンスに依存するアプリである場合は、ツリーベースのコレクションを使用することをお勧めします

于 2009-06-18T19:48:44.413 に答える
0

ツリーコレクションの実装を含む3つの無料の.NETライブラリへのリンクは次のとおりです。

私はそれらのどれも経験がありません。

于 2009-06-18T19:38:42.640 に答える