4

私は、wpf キャンバスに巨大な (10000 以上の要素) グラフを表示するアプリに取り組んでいます。エディターのビューを分割できる (同じグラフの 2 つの離れた部分を同時に表示できる) Visual Studio のような機能が欲しいです。

いくつかの制約があります:

  • グラフ要素のデータ バインディング (バインディングの作成) により、大きなグラフの読み込みが非常に遅くなるため、MVVM を使用していません。「VM」はビューを認識し、必要に応じて直接更新します。
  • Tag プロパティを使用するため、キャンバスの子はフレームワーク要素です。
  • グラフ要素の数が多いため、分割ビューの 2 つの部分の要素ごとに 2 つの異なるビューを保持したくありません

つまり、同じキャンバスの複数の部分を異なる場所に表示するようなものです。WPF で FrameworkElements に 2 つの親を設定することはできないため、最も簡単な方法は論外です :(

私のオプションは何ですか?制約を再考する必要がありますか、それとも回避策がありますか?

詳細が必要な場合はお知らせください (これは大きなアプリケーションであるため、すべての情報を提供することはできません)。

編集:適切な入力イベント通知が必要なため、視覚ブラシで複製することはできません。したがって、両方のビューを編集可能にする必要があります。

4

1 に答える 1

2

オプション:

  • 同じデータを 2 つのコントロールにバインドします。
  • ビジュアル ブラシを使用して、実際のコントロールで入力を複製します。
  • グラフの 2 つの部分を一度に出力できるカスタム グラフ コントロールを作成します。

2 つのコントロールへのバインドが遅すぎる場合は、アプリケーションを再考する必要があると思います。一度に表示されるデータが多すぎて、別々の部分を表示するためにデュアル ビューが必要になるという事実自体が不安です。それは赤い旗を立てるはずです。赤旗は、「私が必要としているものと、私が持っているものは違う」ということを通知します。そして、設計図に戻って、本当に必要なものを見つける必要があります。

それ以外の場合は、カスタム コントロールを作成することをお勧めします。小さな部分だけを表示する必要がある場合でも、グラフは全体的にレンダリングされています。独自のカスタム コントロールがある場合は、一度に表示される部分のみをレンダリングし、コントロール内で分割することで、アプリ全体を高速化できます。

于 2012-12-19T15:20:57.527 に答える