あちこちで書いて回っておりますがPanel.Childrenがとても重いのです。http://referencesource.microsoft.com/#PresentationFramework/Framework/System/Windows/Controls/Panel.cs,1001同じ階層のVisualはVisualTreeに結合した順番でしか表示できないので、ChildrenやPanel.ZIndexが変更される都度、Panel.ZIndexを使ってこのRecomputeZStateが走ります。レイアウトパスの直前に1回だけしてくれたらいいのにと思うかもしれませんが、残念ながらそのような作りにはなっていないのが現状です。すると、FrameworkElementに独自のChildrenを実装してやるしか手がない。いう属性をつけて、IList<UIElement>を実装してやればいいので、結構簡単なんです。</ScrollViewer></Window>今日の主役は仮想化しないで高速なCanvasなので、XAMLはこのくらいです。XAMLの話の予定でしたのにすみません。一応、100000個くらいのシェイプをゾロッと配置してみます。}}100000のシェイプを配置しても、Panel.Children.Addにあるようなもっさり感はありません。ZIndexが不要ならこの程度で十分行けてしまうという程度で考えていただけると良いかなと思います。01:44仮想化しないでも速いCanvasの作り方Tweet広告を非表示にする関連記事2014-12-16FreezableにDataContextが伝播する仕掛け(その2)素早く実証コードを書いてみました。</window>2014-08-23VirtualizingStackPanelのコード長いですねここのところ毎日ソースコードを読みながら実況中継という気分...2014-08-10Panel.ChidrenのボトルネックについてCanvasにせよ、Gridにせよ、みんなPanel継承しています。»プロフィールid:proprogrammerC#とWPFで高速なコードを書くためにやってきたいろいろな事を書いてみます。リリースされましたね月別アーカイブ参加グループプログラミングはてなブログをはじめよう!proprogrammerさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。