web-dev-qa-db-ja.com

WPFグリッド:新しい行を挿入する必要がある場合、行アイテムを再調整する簡単な方法はありますか?

グリッドの行と列の定義は次のようにハードコーディングされているようです。

Grid.Row="3" Grid.Column="1"

私は新しいWPFアプリの開発の途中であり、クライアントがフォームの外観を決定するときに、グリッドから新しい行を絶えず追加および削除する必要があります。これは非常に面倒な作業であることがわかりました。上部近くに行を挿入する場合は、挿入した行の下にあるXAMLのすべての行インデックスを手動で変更する必要があります。

すべての行を自動調整する簡単な方法はありますか?

34

Gridグリッドであり、行と列には特定の理由で番号が付けられています。これは、一定数の正方形にスライスされた方眼紙のようなものです。行と列の数が固定されているため、行と列のスパンなどの強力な処理を実行できます。逆に、これは可変数の行または列に対して柔軟性がありません

可変数の行が必要な場合、または設計時に行を継続的に追加している場合は、Gridが最適な設計要素ではない可能性があります。さらに良いことに、Gridを別のレイアウト要素と組み合わせて使用​​して、必要な柔軟性を得ることができます。

たとえば、すべての可変行を1つのGrid行に入れることができ、グリッド行数はこれ以上変更されません。ただし、そのGrid行に配置するには、可変数の行をサポートするレイアウト要素が必要になります。選択できるものはたくさんありますが、たとえば、便利なのはStackPanelDockPanelの2つです。

特にレイアウト要素DockPanelは、特にDockPanelsまたは他の組み合わせ内でDockPanelsとして使用される場合、可変数の行または列に対して非常に強力です。このレイアウトの問題を処理するために必要なのは、細分化して征服するだけです!

DockPanelの概要は次のとおりです。 WPFチュートリアル:ドックパネル

5
Rick Sladkey

Visual Studio 2015では、行の端にカーソルを合わせると、小さなドロップダウンボックスが表示されます。下矢印をクリックすると、2つのオプションが「前に行を移動」と「後に行を移動」です。それが私が見つけた最良の方法です。

画像の例:

screenshot

39
BoomBaby

Gridの行/列を自動調整する簡単な方法はありません。

私が過去に使用した可能性のある代替手段は、各項目に行/列参照を必要としないため、UniformGridです。データのプレースホルダーをブロックするのに最適です。

初期デザインを行う場合は、Visual Studioのドラッグアンドドロップインターフェイス、または BalsamiqBlend などのデザインツールを使用することをお勧めします。 Balsamiqは意図的に実際のアプリケーションのように見えないので私のお気に入りです。そのため、クライアントは物の実際の外観にとらわれることなく、代わりにデータに集中します。

2
Rachel

これは非常に古い質問ですが、他の誰かがそれに遭遇した場合に備えて、Visual Studio 2013では(おそらく以前にもわかりません)、グリッドのエッジにカーソルを合わせると、行を分割できます2行。

これにより、行が設定された数の高さになります。そのため、おそらく戻って「自動」または「*」または使用したいものに変更する必要があります。また、元の行のすべてが両方の行にまたがるようになるため、これらのアイテムのRowSpan = "2"属性を削除して正しい行に配置する必要がありますが、下の行のすべてのアイテムが自動的に押し下げられます。

これは完全に自動化されているわけではなく、少しクリーンアップされますが、行が多い場合は、すべてを手動で番号を付け直すよりも高速です。

0
sfaust