Z順序の問題とCanvasの関係について
見たまま記述からはてな書式に切り替えてみました。
考えてみたらこっちのほうがWikiっぽくて使いやすいし軽快ですね。
なんか書くのに時間がかかると思っていたら、それは編集用のパネルが遅いからだった、というわけです。
テキストボックスが遅いとか、やっぱりいけませんね。
Wikiといえばその昔、某所のブログシステムを書いていた時に簡易Wikiのようなものを実装したことがありました。
いまやいろいろなWeb編集サービスに組み込まれているので珍しくも何ともありませんが、Wiki程度に簡単なテキストマークアップ言語というのは実に好みです。
手早くかける程度に慣れるにはもうちょっとだけ時間がかかりますが、表を書くくらいならすぐにでも書けますし、ありがたいことです。
本題であるところのZ順序の問題がなぜCanvasにとって深刻なのか、書いてみます。
パネルの種類によって、Z順序の問題は無視してよいほどどうでもいいのです。
パネルの種類 | 子コントロールのZ順序の速度の問題 |
---|---|
StackPanel | 重ならないから問題ない |
WrapPanel | 重ならないから問題ない |
TabPanel | 1枚しか表示しないから問題ない |
Grid | 重ねない使い方が一般的なのでめったに問題にならないケースが多い |
Canvas | 重なるし、コントロールが増えることが多いので問題になる |
DockPanel | 重ならないから問題ない |
他にもいろいろパネルはありますが、Canvas以外でZ順序の速度が問題になることは滅多にありません。
だから、CanvasのZ順序だけ再実装してくれないかなぁとつぶやくわけです。
しかし、あまり表面化していないだけで、上記のすべてのパネルはPanelを継承していますので、コントロール数が増えると過激に重くなります。
仮想化も万能ではありません。特にZ順序が問題になってしまったケースにおいてはこれは難儀です。
簡単に言えば、VisualTreeを変更するコスト、もしくはDataContextを付け替えて再バインディングが生じるコストなどが付随します。なかなか万能の処方が無いのが難しいところです。