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.When overridden in a derived class, provides measurement logic for sizing this element properly, with consideration of the size of any child element content.

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.The available size that the parent element can allocate for the child.

Restituisce

Dimensioni desiderate dell'elemento nel layout.The desired size of this element in layout.

Esempi

Un override tipico di MeasureCore segue questo modello approssimativo (non esiste una raccolta predefinita denominata VisualChildren; VisualChildren è un segnaposto che rappresenta la raccolta figlio che l'elemento mantiene).A typical override of MeasureCore follows this approximate pattern (there is not a built-in collection called VisualChildren; VisualChildren is a placeholder that represents whatever child collection your element maintains).

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.You must call Measure on each child element.

  • In genere, l'implementazione deve memorizzare nella cache le informazioni di misurazione tra il MeasureCore e ArrangeCore chiamate al metodo nello stesso elemento.Generally, your implementation should cache measurement information between the MeasureCore and ArrangeCore method calls in the same element.

  • La chiamata di implementazioni di base di MeasureCore non è obbligatoria, ma può essere appropriata se l'implementazione di base fornisce una funzionalità di layout desiderata.Calling base implementations of MeasureCore is not required, but might be appropriate if the base implementation provides a desired layout capability.

  • Le chiamate a Measure sugli elementi figlio devono passare lo stesso availableSize dell'elemento padre o un subset dell'area, a seconda del tipo di layout supportato dall'elemento padre.Calls to Measure on child elements should pass either the same availableSize as the parent, or a subset of the area, depending on the type of layout the parent element supports. Ad esempio, sarebbe possibile rimuovere l'area per un bordo o un riempimento specifico dell'elemento, una barra di scorrimento o un controllo personalizzato.For example, it would be valid to remove the area for an element-specific border or padding, a scrollbar, or a custom control.

Commenti

È più comune derivare un elemento da FrameworkElement anziché da UIElement.It is more common to derive an element from FrameworkElement rather than UIElement. Se si esegue la derivazione da FrameworkElement, si noti che l'override di MeasureCore in FrameworkElement sealed The MeasureCore Method.If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. Pertanto, si esegue l'override di MeasureCore come mezzo per modificare le caratteristiche delle misure di layout se si deriva da UIElement tramite un'ereditarietà che non include FrameworkElement.Therefore, you only override MeasureCore as a means to alter layout measure characteristics if you derive from UIElement through an inheritance that does not include FrameworkElement. Questo potrebbe essere il caso in cui si tenti di creare un'implementazione personalizzata nel WPFWPF a livello di core.This might be the case if you are attempting to build your own implementation on the WPFWPF core-level. In caso contrario, se si esegue la derivazione da FrameworkElement, il modello di implementazione per il comportamento della misura è l'implementazione FrameworkElement di.MeasureOverride.Otherwise, if you are deriving from FrameworkElement, then the implementation template for Measure behavior is the FrameworkElement implementation of .MeasureOverride.

Un elemento padre con elementi figlio deve chiamare Measure in ogni figlio; in caso contrario, questi elementi figlio non vengono ridimensionati o disposti e scompariranno effettivamente dal layout.A parent element with child elements must call Measure on each child, otherwise these child elements are not sized or arranged and will effectively disappear from layout.

Note per gli eredi

Le implementazioni devono essere in grado di elaborare un valore fornito per availableSize infinito.Implementations must be able to process a value provided for availableSize that is infinite. Un valore infinito non indica vincoli richiesti e rinvia effettivamente la scelta di misurazione all'elemento padre, tramite chiamate di misura ricorsive.An infinite value indicates no requested constraints, and effectively defers measurement choice to the parent element, through recursive Measure calls.

Le implementazioni possono considerare il valore fornito per availableSize come vincolo soft.Implementations can consider the value provided for availableSize to be a soft constraint. L'elemento figlio può specificare dimensioni maggiori, anche se altri aspetti del codice dell'applicazione sono riusciti a determinare le dimensioni effettive correnti dell'elemento padre.The child element might specify a larger size, even if other aspects of application code were able to determine the current actual size of the parent element. La richiesta di grandi dimensioni è una convenzione che indica che l'elemento figlio sta eseguendo una query per stabilire se l'elemento padre può supportare lo scorrimento del contenuto all'interno di un'area di visualizzazione del contenuto.The large size request is a convention that indicates that the child element is querying whether your parent element can support content scrolling within a content display region.

Si applica a