Lingua

UIElement.MeasureCore(Size) Metodo

Definizione

Quando sottoposto a override in una classe derivata, fornisce la logica di misurazione per ridimensionare correttamente questo elemento, tenendo conto delle dimensioni di qualsiasi contenuto dell'elemento figlio.

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

Parametri

availableSize
Size

Dimensioni disponibili che l'elemento padre può allocare per l'elemento figlio.

Valori restituiti

Dimensioni desiderate di questo elemento nel layout.

Esempio

Un override tipico di MeasureCore segue questo modello approssimativo (non esiste una raccolta predefinita denominata VisualChildren; VisualChildren è un segnaposto che rappresenta qualsiasi raccolta figlio gestita dall'elemento).

protected override Size MeasureCore(Size availableSize)
{
    foreach (UIElement child in VisualChildren)
    {
        child.Measure(availableSize);
        // call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child);
    }
    Size desired = CalculateBasedOnCache(_cache);
    return desired;
}
Protected Overrides Function MeasureCore(ByVal availableSize As Size) As Size
    For Each child As UIElement In VisualChildren
        child.Measure(availableSize)
        ' call some method on child that adjusts child size if needed
        _cache.StoreInfoAboutChild(child)
    Next child
    Dim desired As Size = CalculateBasedOnCache(_cache)
    Return desired
End Function
  • È necessario chiamare Measure su ogni elemento figlio.

  • In genere, l'implementazione deve memorizzare nella cache le informazioni di misurazione tra le chiamate al MeasureCore metodo e ArrangeCore nello stesso elemento.

  • La chiamata di implementazioni di base di non è necessaria, ma potrebbe essere appropriata se l'implementazione di MeasureCore base fornisce una funzionalità di layout desiderata.

  • Le chiamate a sugli Measure elementi figlio devono passare lo stesso availableSize oggetto dell'elemento padre o un subset dell'area, a seconda del tipo di layout supportato dall'elemento padre. Ad esempio, sarebbe possibile rimuovere l'area per un bordo o una spaziatura interna specifica dell'elemento, una barra di scorrimento o un controllo personalizzato.

Commenti

È più comune derivare un elemento da FrameworkElement anziché UIElementda . Se si deriva da FrameworkElement, si noti che un override di MeasureCore sui FrameworkElement sigilli il MeasureCore metodo . Pertanto, si esegue l'override solo come mezzo per modificare le caratteristiche delle misure di layout se si deriva da tramite un'ereditarietà MeasureCore che non include UIElement.FrameworkElement Questo potrebbe essere il caso se si sta tentando di creare un'implementazione personalizzata sul livello principale macchine virtuali Windows. In caso contrario, se si deriva da FrameworkElement, il modello di implementazione per il comportamento measure è l'implementazione FrameworkElement di .MeasureOverride

Un elemento padre con elementi figlio deve chiamare Measure su ogni elemento figlio; in caso contrario, questi elementi figlio non vengono ridimensionati o disposti e scompaiono efficacemente dal layout.

Note per gli eredi

Le implementazioni devono essere in grado di elaborare un valore fornito per availableSize l'infinito. Un valore infinito indica nessun vincolo richiesto e rinvia efficacemente la scelta di misurazione all'elemento padre, tramite chiamate Di misura ricorsive.

Le implementazioni possono considerare il valore fornito per availableSize essere un vincolo soft. L'elemento figlio potrebbe specificare una dimensione maggiore, anche se altri aspetti del codice dell'applicazione sono stati in grado di determinare le dimensioni effettive correnti dell'elemento padre. La richiesta di grandi dimensioni è una convenzione che indica che l'elemento figlio esegue una query se l'elemento padre può supportare lo scorrimento del contenuto all'interno di un'area di visualizzazione del contenuto.

Si applica a