子要素は、より多くのスペースを要求できます。それが親要素によって尊重されるかどうかは、親要素次第です。
MeasureCore は で MeasureOverride のみを呼び出しますthis
。あなたは物語のごく一部しか理解していません。レイアウト システムは、要素のツリーのMeasure
最上位を呼び出すことから始まります。これは、 onを呼び出します。ただし、いくつかの場所で呼び出し中です。Panel
MeasureCore
this
MeasureCore
FrameworkElement
MeasureOverride
0 と availableSize の間の上限をどこで見ていますか?
編集: Re:「まあ、MeasureCoreの最後の行...」
私が言ったように、あなたは起こっていることすべての小さな部分を見ています.
- すべてのコントロールには、実際に必要なスペースよりも多くのスペースを要求する非常に一般的な方法が 1 つあります
Margin
。それ以上のスペースを要求するには、カスタム コントロールを作成する必要があります。
- に表示される制約は、設定されている場合、 /および/の制限と
MeasureCore
関係があることがわかります。MinWidth
MinHeight
MaxWidth
MaxHeight
そうです、ドキュメントにあるように、コントロールは必要以上のスペースを要求できます。を除いて、デフォルトのコントロールはどれもこれを行うようには見えMargin
ず、パネルなどのコンテナはそれを尊重する必要はありません。ほとんどの状況では、子供の親の観点からも意味をなさないため、ドキュメントで読んだことを利用することはありません。
を作成しUserControl
、XAML でWidth
との値を削除して任意の を返すようにオーバーライドし、そのインスタンスを に配置すると、返された に表示されます。Height
MeasureOverride
Size
Canvas
Size
レイアウト システムのこの機能は、カスタム パネル、カスタム コントロール、またはユーザー コントロールを作成する場合に役立ちますが、それ以外の場合はおそらく役に立ちません。しかし、それはそこにあります。ドキュメントは正しいです。