FrameworkElement.MeasureOverride(Size) Metodo

Definizione

Quando sottoposto a override in una classe derivata, misura le dimensioni del layout necessarie per gli elementi figlio e determina una dimensione per la FrameworkElementclasse derivata da .

protected:
 virtual System::Windows::Size MeasureOverride(System::Windows::Size availableSize);
protected virtual System.Windows.Size MeasureOverride(System.Windows.Size availableSize);
abstract member MeasureOverride : System.Windows.Size -> System.Windows.Size
override this.MeasureOverride : System.Windows.Size -> System.Windows.Size
Protected Overridable Function MeasureOverride (availableSize As Size) As Size

Parametri

availableSize
Size

Dimensioni disponibili che questo elemento può assegnare agli elementi figlio. L'infinito può essere specificato come valore per indicare che l'elemento verrà ridimensionato in base al contenuto disponibile.

Valori restituiti

Le dimensioni di questo elemento ne determinano le esigenze durante il layout, in base ai calcoli delle dimensioni degli elementi figlio.

Commenti

Eseguire l'override di MeasureOverride per implementare il comportamento di ridimensionamento del layout personalizzato per l'elemento durante la partecipazione al sistema di layout Windows Presentation Foundation (macchine virtuali Windows). L'implementazione deve eseguire le operazioni seguenti:

  1. Scorrere la raccolta particolare di elementi figlio che fanno parte del layout, chiamare Measure su ogni elemento figlio.

  2. Accedere DesiredSize immediatamente all'elemento figlio (questa proprietà viene impostata come proprietà dopo Measure la chiamata).

  3. Calcolare le dimensioni nette desiderate dell'elemento padre in base alla misurazione degli elementi figlio.

Il valore restituito di MeasureOverride deve essere la dimensione desiderata dell'elemento, che diventa quindi l'input della misura per l'elemento padre dell'elemento corrente. Questo stesso processo continua attraverso il sistema di layout fino a quando non viene raggiunto l'elemento radice della pagina.

Durante questo processo, gli elementi figlio potrebbero restituire una dimensione maggiore DesiredSize rispetto all'iniziale availableSize per indicare che l'elemento figlio desidera più spazio. Questa operazione può essere gestita nella propria implementazione introducendo un'area scorrevole, ridimensionando il controllo padre, stabilendo un certo modo di ordine in pila o qualsiasi numero di soluzioni per misurare o organizzare il contenuto.

Importante

Gli elementi devono chiamare Measure su ogni elemento figlio durante questo processo; in caso contrario, gli elementi figlio non verranno ridimensionati correttamente o disposti.

Note per gli eredi

Il codice non compilato seguente illustra questo modello di implementazione. VisualChildren rappresenta una proprietà di raccolta enumerabile di elementi figlio che deve essere definita dall'elemento. La proprietà può essere denominata qualsiasi elemento. VisualChildren è un nome segnaposto ai fini di questo esempio, VisualChildren non è un'API fornita da macchine virtuali Windows o parte di un modello di denominazione.

protected override Size MeasureOverride(Size availableSize)
{
    Size desiredSize = new Size();
    foreach (UIElement child in VisualChildren)
    {
        child.Measure(availableSize);
        // do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
        // if greater than availableSize, must decide what to do and which size to return
    }
    // desiredSize = ... computed sum of children's DesiredSize ...;
    // IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
    // PositiveInfinity might be an availableSize input; this means that the parent does not care about sizing
    return desiredSize;
}
Protected Overrides Function MeasureOverride(ByVal availableSize As Size) As Size
    Dim desiredSize As New Size()
    For Each child As UIElement In VisualChildren
        child.Measure(availableSize)
        ' do something with child.DesiredSize, either sum them directly or apply whatever logic your element has for reinterpreting the child sizes
        ' if greater than availableSize, must decide what to do and which size to return
    Next child
    ' desiredSize = ... computed sum of children's DesiredSize ...
    ' IMPORTANT: do not allow PositiveInfinity to be returned, that will raise an exception in the caller!
    ' PositiveInfinity might be an availableSize input - this means that the parent does not care about sizing
    Return desiredSize
End Function

Si applica a