8

表形式のデータ (テレビ チャンネル) を表示しようとしていますが、DataGrid/UniformGrid/Table with FlowDocument/etc などのオプションがあります。何が最良の選択肢になるのかわかりません。主な問題は、セルのサイズが時間の長さによって異なるため、セルのサイズが均一ではないことです。それらの間にもパディングを入れたいと思います。さらに、テーブルの一部のみを表示できるようにし、残りを表示するには上/下/右にスクロールできるようにする必要があります。

これに最適な WPF コントロール オプションは何でしょうか? これが私が何をしようとしているのかの小さな図です。左上の白い四角は、最初に表示したいもので、残りの部分までスクロールできるようにします。

ここに画像の説明を入力

4

1 に答える 1

3

ここでやろうとしていることを達成するには、いくつかの方法があります。パフォーマンスが問題にならない場合は、仮想化を無視して試してみDockPanel ます。ここでの欠点は、アイテムを行ごとに追加するのではなく、順番に追加する必要があることです。

もう 1 つのオプションは、2 つのスタック パネル (各方向に 1 つずつ) を使用することです。これは追加の問題に対処しますが、より多くのパネルを使用する必要があります。

前の 2 つのオプションは両方とも、個々のアイテムに高さ/幅を設定する必要があります。

最後のオプション (グリッドの大きさに応じて) は、固定サイズの行と行にまたがる項目を持つ列を持つ Grid を使用することです ( rowspanプロパティを使用)。この方法の欠点は、指定されていない行/列数に対して xaml でこのコントロールを作成する良い方法がわからないため、必要な数の行/列を取得するにはコードで作成する必要があることです。

パフォーマンスの問題がある場合は、VirtualizingStackPanelを使用してみてください。それでもパフォーマンス要件を満たさない場合は、 をサブクラス化しVirtualizingPanel、特定のニーズに合わせて調整する必要があります。

パネルのパフォーマンスについて詳しくは、こちらをご覧ください。

StackPanel最初に2 つの方法を試し、次にそのVirtualizingStackPanel方法を試し、それがうまくいかない場合は最後にVirtualizingPanel

パディングはMargin、各サブコントロールのプロパティを設定することで簡単に実現できます。

スクロールするには、ScrollViewer

于 2012-08-14T19:37:13.593 に答える