2011-08-01 1 views
2

私はあなたの集団の脳を選びたいと思っています。私は楽しみのために、英国IECC鉄道signalboxのシムを作ってるんだ :それはシンプルなグラフィックスと、80の技術だ http://photos.signallingnotices.org.uk/photo.php?pc=77&p=IMG_7319.JPG :Dグリッドを延長するか、別のパネルを適用できますか?

は、ここで実際の生活の例です。

本質的には、カスタムビットマップフォントを使用して固定サイズのセルのグリッドです。

私のバージョンは、より柔軟性を持たせるために、WPFを使用しますが、元々は一連のモニタでページを区切られていますが、同じ基本的な外観を持っています。私はまた、必要に応じてrows \ columnsを追加して、グリッドを無限にしたいと思っています(エディタのリースでは、シムの部分は必要ありません)。

私の最初の試みは、私が最初に簡単にできるように、グリッドと長方形を使っています。 矩形は、どれほどうまく実行されるかによって、おそらく低レベルに変更されます。

私はGridより優れたものを使うことができると思ういくつかの問題に取り組んでいます。

「エディタ」モードでは、コンテキストメニューを使うか、グリッド上の空のセルを選択することで、新しい要素を追加できるはずです。 どのセルが選択されたかを調べるためのすべてのソリューションは、すべてのセルに透明な四角形を追加するか、ヒットテストを含むハックを追加し、各セルをループして交差をチェックします。

私は潜在的に数千の細胞を取り扱っているので、それらの解決策はどちらも実際には適切ではないように思われ、標準のグリッドが進歩する最良の方法かどうか疑問に思う。

私も...要素のグループをドラッグ&ドロップすることができるように

が欲しいグリッドは、「セル」の概念がありません。その行\列に内容がある場合にのみ、行\列を取得できます。

各セルにはビジュアルが1つだけ表示されます。

標準のグリッドよりも良い方法がありますか?カスタムパネルを作成すること、既存のパネルを拡張すること、または既存の無料のサードパーティコントロールが役立つでしょうか?私の脳はグリッド以外のものとして想像することができないようです。D

答えて

1

私は第三者のパネルについてはわかりませんが、グリッドはあなたにとって最良の選択肢だと思います。ここ

は私がやるだろうと何:

  • 透明の長方形(さえ細胞の1000で、これは以下を参照してください、問題になることはありません)
  • パネルの封止を含む各セルを持つグリッドあなたがそれにIsVirtualizingプロパティを付けることができる限り、グリッド(例えば、StackPanel、またはあなたがそれにIsVirtualizingプロパティを付けることができる限り、どんなパネルにも合っている)
  • 次に、このパネルにVirtualizingPanel.IsVirtualizing = trueVirtualizingPanel.VirtualizationMode = VirtualizationModes.Recyclingを設定して、

とVoilà!私はあなたがこれ以上のものを必要としているとは思っていません。あなたが言いたい "ハック"を使わないと、これ以上のことではできないと確信しています(この場合、 "ハック"と呼んでいません)。

NB:これはあなたのグリッドがスクロールすることを前提としています(私は "1000s"のセルがあなたの画面に収まらないと思うので)。グリッドを画面上に完全に表示させる場合、仮想化は基本的に役に立たず、詳細な方法のいずれかを使用する必要があります

関連する問題