UIElement.MeasureCore(Size) Metodo

Definizione

Quando sottoposto a override in una classe derivata, fornisce la logica di misurazione per ridimensionare correttamente questo elemento, prendendo in considerazione la dimensione del contenuto di tutti gli elementi 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

La dimensione disponibile che l'elemento padre può allocare per l'elemento figlio.

Restituisce

Dimensioni desiderate dell'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 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 MeasureCore non è necessaria, ma potrebbe essere appropriata se l'implementazione di base offre una funzionalità di layout desiderata.

  • Le chiamate agli Measure elementi figlio devono passare la stessa dell'elemento availableSize padre o un subset dell'area, a seconda del tipo di layout supportato dall'elemento padre. Ad esempio, sarebbe valido rimuovere l'area per un bordo o un riempimento specifico dell'elemento, una barra di scorrimento o un controllo personalizzato.

Commenti

È più comune derivare un elemento da FrameworkElement anziché UIElement. Se si deriva da FrameworkElement, si noti che un override di MeasureCore sui FrameworkElement sigilli il MeasureCore metodo. Pertanto, si esegue l'override MeasureCore solo come mezzo per modificare le caratteristiche della misura di layout se si deriva da UIElement un'ereditarietà che non include FrameworkElement. Questo potrebbe essere il caso se si sta tentando di creare un'implementazione personalizzata a livello di core WPF. In caso contrario, se si deriva da FrameworkElement, il modello di implementazione per il comportamento di Misura è l'implementazione FrameworkElement di .MeasureOverride.

Un elemento padre con elementi figlio deve chiamare Measure ogni elemento figlio, in caso contrario questi elementi figlio non sono ridimensionati o disposti e scompaiono in modo efficace dal layout.

Note per gli eredi

Le implementazioni devono essere in grado di elaborare un valore fornito per availableSize questo è infinito. Un valore infinito indica che non sono richiesti vincoli e determina in modo efficace la scelta di misura per l'elemento padre, tramite chiamate Di misura ricorsive.

Le implementazioni possono considerare il valore specificato 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 dimensioni elevate è 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