34


16

私はWPFにはかなり慣れていませんが、解決するのが少し難しいような問題に遭遇しました。 基本的に私はスケーラブルだが正方形(または他の任意の)アスペクト比を保つ4x4グリッドが欲しいです。 これは実際にはかなりトリッキーに思えますが、合理的に共通の要件であると想像するので、私は驚きます。

私はこのようなグリッド定義から始めます:

...

これをストレッチするように設定した場合は、ウィンドウまたはそれを入れたコンテナをいっぱいにすることができます。 行と列は同じですが、縦横比は固定されていません。

それから私は利用可能なスペースを使うためにStackPanelにそれを入れてみました。 助けにはならなかった。 私がViewboxesを覚えていたときにあった方法のほとんどを手に入れたのは何ですか。

... 追加スペース

今私のコンテンツは拡大縮小し、アスペクト比を保ちます。 問題は、ウィンドウの幅が足りない場合、私のグリッドの一部がスクリーンからはみ出していることです。 その場合はスクロールできますように。 同様に、私は最小サイズを必要とするかもしれず、それは垂直スクロールにもつながるかもしれません。

今、私は自分のStackPanelとGridを(別々に)適切なScrollViewerコンテナに入れようとしましたが、その後、コンテンツはウィンドウに合わせて拡大縮小されません。 それはフルサイズになりますが、これは良くありません。

じゃあどうやってこれをやるの? 私は間違った木に吠えていますか? これを行うより良い/簡単な方法はありますか?

4 Answer


71


あなたは、コンテンツ(グリッド)を ViewBoxの中に置き、http://msdn.microsoftを設定する必要があります。 .com / ja-jp / library / system.windows.controls.viewbox.stretch.aspx [Viewbox.Stretchプロパティ] to http://msdn.microsoft.com/ja-jp/library/system.windows.media.stretch .aspx [ストレッチユニフォーム]

Viewboxコントロールは、子要素を拡大または縮小するために使用され、子の拡大方法を制御できます。 ここで examplesを確認してください。

https://i.stack.imgur.com/5sBYY.jpg[image:https://i.stack.imgur.com/5sBYY.jpg[alt text]]〜(出典:http://i.msdn。 microsoft.com/ms635549.img_mmgraphics_stretchenum(en-us,VS.90).jpg[microsoft.com])~


5


この場合、最善の策は UniformGridです。 これは、N×Nグリッドが必要な場合にのみ役立ちます。


-1


あなたが期待している振る舞いをするにはウィンドウ上で `SizeToContent =" WidthAndHeight "`を設定する必要があります。


-3


各ColumnおよびRowWidthに対して*の代わりに0.25 *を配置