UIElement.DesiredSize プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
public:
property Size DesiredSize { Size get(); };
Size DesiredSize();
public Size DesiredSize { get; }
var size = uIElement.desiredSize;
Public ReadOnly Property DesiredSize As Size
プロパティ値
レイアウト プロセスのメジャー パス中にこの UIElement が計算したサイズ。
例
次の使用例は、 ArrangeOverride 実装の子イテレーションの一部として DesiredSize に対してクエリを実行します。
// Second arrange all children and return final size of panel
protected override Size ArrangeOverride(Size finalSize)
{
// Get the collection of children
UIElementCollection mychildren = Children;
// Get total number of children
int count = mychildren.Count;
// Arrange children
// We're only allowing 9 children in this panel. More children will get a 0x0 layout slot.
int i;
for (i = 0; i < 9; i++)
{
// Get (left, top) origin point for the element in the 3x3 block
Point cellOrigin = GetOrigin(i, 3, new Size(100, 100));
// Arrange child
// Get desired height and width. This will not be larger than 100x100 as set in MeasureOverride.
double dw = mychildren[i].DesiredSize.Width;
double dh = mychildren[i].DesiredSize.Height;
mychildren[i].Arrange(new Rect(cellOrigin.X, cellOrigin.Y, dw, dh));
}
// Give the remaining children a 0x0 layout slot
for (i = 9; i < count; i++)
{
mychildren[i].Arrange(new Rect(0, 0, 0, 0));
}
// Return final size of the panel
return new Size(300, 300);
}
'Second arrange all children and return final size of panel
Protected Overrides Function ArrangeOverride(ByVal finalSize As Size) As Size
'Get the collection of children
Dim mychildren As UIElementCollection = Children
'Get total number of children
Dim count As Integer = mychildren.Count
'Arrange children
'only allowing 9 children in this panel. More children will get a 0x0 layout slot.
Dim i As Integer
For i = 0 To 8
'Get (left, top) origin point for the element in the 3x3 block
Dim cellOrigin As Point = GetOrigin(i, 3, New Size(100, 100))
'Arrange child
'Get desired height and width. This will not be larger than 100x100 as set in MeasureOverride.
Dim dw As Double = mychildren(i).DesiredSize.Width
Dim dh As Double = mychildren(i).DesiredSize.Height
mychildren(i).Arrange(New Rect(cellOrigin.X, cellOrigin.Y, dw, dh))
Next
For i = 9 To count - 1
'Give the remaining children a 0x0 layout slot
mychildren(i).Arrange(New Rect(0, 0, 0, 0))
Next
'Return final size of the panel
Return New Size(300, 300)
End Function
'Calculate point origin of the Block you are in
Protected Function GetOrigin(ByVal blockNum As Integer, ByVal blocksPerRow As Integer, ByVal itemSize As Size) As Point
'Get row number (zero-based)
Dim row As Integer = CInt(Math.Floor(blockNum / blocksPerRow))
'Get column number (zero-based)
Dim column As Integer = blockNum - blocksPerRow * row
'Calculate origin
Dim origin As New Point(itemSize.Width * column, itemSize.Height * row)
Return origin
End Function
注釈
通常、DesiredSize は、 ArrangeOverride や MeasureOverride などのレイアウト動作のオーバーライドを実装するときに、測定要因の 1 つとしてチェック されます。 親コンテナーのレイアウト ロジックによっては、DesiredSize が完全に尊重され、DesiredSize に対する制約が適用される場合があります。また、このような制約によって、親要素または子要素の他の特性も変更される可能性があります。 たとえば、スクロール可能な領域をサポートするコントロール (ただし、スクロール可能な領域を既に有効にしているコントロールから派生しないことを選択) では、使用可能なサイズを DesiredSize と比較できます。 その後、コントロールは、そのコントロールの UI でスクロール バーを有効にする内部状態を設定できます。 または、DesiredSize を無視して、添付プロパティ値の確認などの他の考慮事項によってサイズが変更されたレイアウトを要素が常に取得できます。
DesiredSize には、要素に対して少なくとも 1 つの "Measure" パスのレイアウトが実行されていない限り、有用な値は含まれません。
DesiredSize は実際には、独自のレイアウト オーバーライド メソッドを定義する場合にのみ使用するためのものです。 実行時にアプリの UI 内の要素のサイズに関心がある場合は、代わりに ActualWidth プロパティと ActualHeight プロパティを使用する必要があります。 グリッド セルのサイズ設定などの動的レイアウト手法によって要素が影響を受ける場合は、この方法でサイズstar確認している可能性があります。 ActualWidth と ActualHeight の値は、レイアウトの実行後に確実に実行される状況 (Loaded イベントなど)、または UI が最初にレンダリングされた後にのみ可能なユーザー アクションによってトリガーされる場合にのみ使用します。
適用対象
こちらもご覧ください
- ArrangeOverride(Size)
- MeasureOverride(Size)
- Arrange(Rect)
- <xref:Windows.UI.Xaml.UIElement.Measure(Windows.Foundation.Size)%0a>
- Measure(Size)