ここでやろうとしていることを達成するには、いくつかの方法があります。パフォーマンスが問題にならない場合は、仮想化を無視して試してみDockPanel
ます。ここでの欠点は、アイテムを行ごとに追加するのではなく、順番に追加する必要があることです。
もう 1 つのオプションは、2 つのスタック パネル (各方向に 1 つずつ) を使用することです。これは追加の問題に対処しますが、より多くのパネルを使用する必要があります。
前の 2 つのオプションは両方とも、個々のアイテムに高さ/幅を設定する必要があります。
最後のオプション (グリッドの大きさに応じて) は、固定サイズの行と行にまたがる項目を持つ列を持つ Grid を使用することです ( rowspanプロパティを使用)。この方法の欠点は、指定されていない行/列数に対して xaml でこのコントロールを作成する良い方法がわからないため、必要な数の行/列を取得するにはコードで作成する必要があることです。
パフォーマンスの問題がある場合は、VirtualizingStackPanelを使用してみてください。それでもパフォーマンス要件を満たさない場合は、 をサブクラス化しVirtualizingPanel
、特定のニーズに合わせて調整する必要があります。
パネルのパフォーマンスについて詳しくは、こちらをご覧ください。
StackPanel
最初に2 つの方法を試し、次にそのVirtualizingStackPanel
方法を試し、それがうまくいかない場合は最後にVirtualizingPanel
パディングはMargin
、各サブコントロールのプロパティを設定することで簡単に実現できます。
スクロールするには、ScrollViewer