私はすべての項目の高さを知りたい私のStackPanel
。Stackpanel:高さ対ActualHeight対ExtentHeight対ViewportHeight対DesiredSize対RenderSize
の違いは何ですか:
Height
は - 要素の高さの推奨を取得または設定します。ActualHeight
- この要素のレンダリングされた高さを取得します。 (readonly)ExtentHeight
- エクステントの垂直サイズを含む値を取得します。 (readonly)ViewportHeight
- コンテンツのビューポートの垂直サイズを含む値を取得します。 (readonly)DesiredSize
- レイアウトプロセスの計測パスでこの要素が計算したサイズを取得します。 (readonly)RenderSize
- この要素の最終的なレンダリングサイズを取得します(または設定しますが、注釈を参照してください)。 MSDNから
:
Height
要素の提案の高さを取得または設定します。プロパティ値:
Double
- 要素の高さで、デバイスに依存しない単位(1/96thインチ/単位)です。要素の高さは、デバイスに依存しない単位(単位1/96thインチ)です。
ActualHeight(読み取り専用)
この要素の描画時の高さを取得します。プロパティ値:
Double
- 要素の高さ。デバイスに依存しない単位(1/96thインチ/単位)の値です。このプロパティは、他の高さ入力とレイアウトシステムに基づいて計算された値です。この値は、実際のレンダリングパスに基づいてレイアウトシステム自体によって設定されるため、入力の変更の基礎となるHeightなどのプロパティの設定値よりわずかに遅れている可能性があります。
ActualHeightは計算された値なので、レイアウトシステムによるさまざまな操作の結果として、複数のまたは増分の変更が報告される可能性があることに注意してください。レイアウトシステムは、子要素に対する必要な測定空間、親要素による制約などを計算することができる。
ExtentHeight(読み取り専用)
エクステントの縦方向のサイズが含まれている値を取得します。プロパティの高さ:
Double
- エクステントの垂直サイズを表すDouble。返される値は、デバイス非依存ピクセルで記述されています。
ViewportHeight(読み取り専用)
コンテンツのビューポートの縦方向のサイズが含まれている値を取得します。プロパティ値:
Double
- コンテンツのビューポートの垂直サイズを表すDoubleです。返される値は、デバイス非依存ピクセルで記述されています。
DesiredSize(読み取り専用)
この要素は、レイアウト処理の測定パスの実行中に計算サイズを取得します。プロパティ値:
Size
- 計算されたサイズで、アレンジ・パスの望ましいサイズになります。このプロパティによって返される値は、IsMeasureValidプロパティの値がtrueの場合にのみ有効です。
通常、DesiredSizeは、ArrangeOverride、MeasureOverride、またはOnRenderなどのレイアウトビヘイビアのオーバーライドを実装するときの測定要素の1つとしてチェックされます(OnRenderの場合、RenderSizeをチェックするかもしれませんが、これは実装によって異なります)。シナリオによっては、実装されたロジックによってDesiredSizeが完全に尊重され、DesiredSizeの制約が適用され、そのような制約によって親要素または子要素の他の特性も変更される可能性があります。たとえば、スクロール可能な領域をサポートするコントロール(ただし、スクロール可能な領域を既に有効にしているWPFフレームワークレベルのコントロールから派生しないことを選択)は、使用可能なサイズをDesiredSizeと比較できます。コントロールは、そのコントロールのUIのスクロールバーを有効にした内部状態を設定できます。また、特定のシナリオでDesiredSizeを無視することも可能です。
は、この要素の最終的な描画サイズを取得します。
プロパティ値:
Size
- この要素のレンダリングサイズ。このプロパティは、OnRenderやGetLayoutClipなどのレイアウトシステムオーバーライド内の適用可能なレンダーサイズをチェックするために使用できます。
もっと一般的なシナリオは、クラスハンドラのオーバーライドまたはOnRenderSizeChangedイベントでSizeChangedイベントを処理する場合です。私の場合は
iはStackPanel
内のすべての項目の希望の高さを知ってほしいです。言い換えれば
:私は(描画前)のStackPanelのすべての項目の高さを知ってほしい、と彼らはパネルをオーバーフローした場合、私は
- が
- 規模を縮小
- を削除します
- は、彼らがのStackPanelに収まることを確認するために
項目を調整します。私はおそらくサイズを変更イベント(?SizeChangedLayoutUpdated)中に希望高さ(?ExtentHeight DesiredSizeを)を取得したい意味
- 任意の描画が発生する前には、(それは高速です)。
これらのプロパティのほとんどはゼロを返します。これらのプロパティが何を意味しているのか分かりませんが、ドキュメントには説明されていません。