1

スケッチに示されているようなレイアウトを実現する必要があります。

  1. 複数の列-ユーザーは幅を調整できます
  2. 2つのゾーンに垂直に分離-ユーザーは高さを調整できます
  3. 各列には複数のアイテムが含まれます-そのためにリストを使用します

これにはグリッドを使用する必要がありますか?または、DataGridの方が適切ですか?Gridを使用すると、希望どおりに分割する際に問題が発生するのではないかと思いますが、そのようなシナリオではDataGridが「重い」のではないかと思います。

また、すべてが重くスタイリングされるので、それを行うことの容易さも重要です。

編集:

いくつかのことを言及するのを忘れました:

  1. 列の数は固定されませんが、制限されます-7まで
  2. それらの「セル」にビューを挿入します
  3. MVVMシナリオで列を非表示/表示することは可能ですか?GridSplitterを使用してスプリッターの可視性をバインドすると、「幅」が「自動」に設定されている場合にスプリッターを非表示にして列からコンテンツを削除できるという理由だけで、「非表示」のシナリオを実現できると考えています。

ここに画像の説明を入力してください

4

2 に答える 2

1

列数が固定されていることを考えると、私見はGridここに行く方法です。MaxHeightユーザーがグリッドの下部の下に水平スプリッターをドラッグできないように、最初の行を設定するためのロジックが必要になります(はい、デフォルトの動作である必要があります... :( )。

MaxWidth各列のについても同じことが言えます。すべての列の実際の幅を考慮する必要があるため、より複雑です。また、垂直スプリッターの1つをドラッグしたときにすべての列の幅を更新する必要があるため、グリッド全体の幅は同じままです。

DataGridやり過ぎになり、価値のあるものは何も得られません-最初は垂直スプリッターが処理されます-しかし、考慮しなければならないスクロールバーがあり、それらを無効にすると、列のサイズを変更する機能が台無しになります。また、水平スプリッターは行ヘッダーでのみ使用可能であり、コントロールの全幅では使用できません。さらに、最初の行の高さの計算は手動で行う必要があり、その後、データグリッドに何らかの方法で強制されます。

考えてみると、おそらくカスタムパネル(MyPanel)とを継承するカスタムスプリッター(MySplitter)を使用するでしょうThumb

リストについては、おそらくHeaderedContentControlカスタムコントロールテンプレートを使用します。

于 2012-06-17T20:01:01.810 に答える
0

必要なコントロールを使用できます。実際には、GridSplitterと呼ばれる特別なクラスでDataGridを使用できます(この例のように:CodeBetter)。セルや行をDataTemplatesでカスタマイズして、最高の効果をアーカイブすることができます

于 2012-06-17T19:59:43.540 に答える