UIElement.MeasureCore(Size) Método

Definição

Quando substituído em uma classe derivada, fornece uma lógica de medida para o dimensionamento correto desse elemento, levando em consideração o tamanho do conteúdo de elementos filho.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

Parâmetros

availableSize
Size

O tamanho disponível que o elemento pai pode alocar para o filho.The available size that the parent element can allocate for the child.

Retornos

O tamanho desejado desse elemento no layout.The desired size of this element in layout.

Exemplos

Uma substituição típica de MeasureCore segue esse padrão aproximado (não há uma coleção interna chamada VisualChildren; VisualChildren é um espaço reservado que representa qualquer coleção filho que seu elemento mantém).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
  • Você deve chamar Measure em cada elemento filho.You must call Measure on each child element.

  • Em geral, sua implementação deve armazenar em cache as informações de medidas entre as chamadas de método MeasureCore e ArrangeCore no mesmo elemento.Generally, your implementation should cache measurement information between the MeasureCore and ArrangeCore method calls in the same element.

  • A chamada de implementações base de MeasureCore não é necessária, mas pode ser apropriada se a implementação base fornecer um recurso de layout desejado.Calling base implementations of MeasureCore is not required, but might be appropriate if the base implementation provides a desired layout capability.

  • Chamadas para Measure em elementos filho devem passar o mesmo availableSize que o pai, ou um subconjunto da área, dependendo do tipo de layout que o elemento pai suporta.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. Por exemplo, seria válido remover a área de uma borda ou um preenchimento específico de elemento, uma barra de rolagem ou um controle personalizado.For example, it would be valid to remove the area for an element-specific border or padding, a scrollbar, or a custom control.

Comentários

É mais comum derivar um elemento de FrameworkElement em vez de UIElement.It is more common to derive an element from FrameworkElement rather than UIElement. Se você estiver derivando de FrameworkElement, observe que uma substituição de MeasureCore em FrameworkElement lacra o método MeasureCore.If you are deriving from FrameworkElement, note that an override of MeasureCore on FrameworkElement seals the MeasureCore method. Portanto, você só substituirá MeasureCore como um meio de alterar características de medida de layout se você derivar de UIElement por meio de uma herança que não inclui 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. Esse pode ser o caso se você estiver tentando criar sua própria implementação na WPFWPF nível de núcleo.This might be the case if you are attempting to build your own implementation on the WPFWPF core-level. Caso contrário, se você estiver derivando de FrameworkElement, o modelo de implementação para comportamento de medida será a implementação de FrameworkElement do.MeasureOverride.Otherwise, if you are deriving from FrameworkElement, then the implementation template for Measure behavior is the FrameworkElement implementation of .MeasureOverride.

Um elemento pai com elementos filho deve chamar Measure em cada filho, caso contrário, esses elementos filho não são dimensionados ou organizados e, efetivamente, desaparecerão do 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.

Notas aos Herdeiros

As implementações devem ser capazes de processar um valor fornecido para availableSize que seja infinito.Implementations must be able to process a value provided for availableSize that is infinite. Um valor infinito indica que não há restrições solicitadas e, efetivamente, adia a escolha da medida para o elemento pai, por meio de chamadas de medida recursivas.An infinite value indicates no requested constraints, and effectively defers measurement choice to the parent element, through recursive Measure calls.

As implementações podem considerar o valor fornecido para availableSize ser uma restrição flexível.Implementations can consider the value provided for availableSize to be a soft constraint. O elemento filho pode especificar um tamanho maior, mesmo que outros aspectos do código do aplicativo fossem capazes de determinar o tamanho real atual do elemento pai.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. A solicitação de tamanho grande é uma convenção que indica que o elemento filho está consultando se o elemento pai pode dar suporte à rolagem de conteúdo em uma região de exibição de conteúdo.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.

Aplica-se a