スタックパネルのスペースを埋めるためにテキストボックスが伸びないのはなぜですか? これは設計によるものですか?グリッドでは、テキスト ボックスが期待どおりに伸びます。
3 に答える
はい、仕様です。は、が要求StackPanel
するスペースを割り当てます。TextBox
に幅を設定していない場合はTextBox
、テキストに収まる十分な幅しか必要ありません。
ケントの答えは正しいようです。
StackPanel の動作を強制的にオーバーライドするには、含まれている要素の Width プロパティを動的に計算設定するか、MeasureOverrideのファンキーなオーバーライドを行う必要があると思います。別のレイアウト マネージャー/パネルを使用したいのですが。私が注意したいくつかのこと..
- 子要素の HorizontalAlignment プロパティと VerticalAlignment プロパティの既定値はStretchです (明示的に指定しない場合)。
StackPanel は、Orientation プロパティの値に基づいて要素を拡大します。そう
- Orientation=Horizontal は、すべての要素が垂直方向に最大まで引き伸ばされることを意味します。要素は水平方向に流れます。
- Orientation=Vertical は、すべての要素が水平方向に最大まで引き伸ばされることを意味します。要素は垂直に流れます。
- 明示的に指定しない限り、子要素の幅と高さは NaN です。明示的な値を指定すると、StackPanel は、Horiz および Vert Alignment 設定よりも優先されます。
- StackPanel 自体には HorizontalAlignment と VerticalAlignment があり、レイアウトにさらに工夫が加えられています。この例を試すことができます。
デフォルト値は、StackPanel に含まれるコンテンツの HorizontalAlignment と VerticalAlignment の両方の stretch です。
要素で Height プロパティと Width プロパティが明示的に設定されている場合、これらの測定値はレイアウト時に優先され、HorizontalAlignment を Stretch に設定した場合の一般的な効果がキャンセルされます。
アイテムのサイズを均等にする必要がありましたが、垂直に積み重ねました。
私は UniformGrid を使用し、Columns プロパティを 1 に設定しました (TextBox でテストしたところ、思い通りに伸びます)。