Linguagem

FrameworkElement.MeasureOverride(Size) Método

Definição

Quando sobreposto numa classe derivada, mede o tamanho no layout necessário para elementos filhos e determina um tamanho para a FrameworkElementclasse derivada em .

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

Parâmetros

availableSize
Size

O tamanho disponível que este elemento pode dar aos elementos filhos. O infinito pode ser especificado como um valor para indicar que o elemento terá um tamanho para o conteúdo disponível.

Devoluções

O tamanho que este elemento determina durante o layout, com base nos cálculos dos tamanhos dos elementos filhos.

Observações

Override MeasureOverride para implementar um comportamento personalizado de dimensionamento do layout do seu elemento à medida que este participa no sistema de layout Windows Presentation Foundation (WPF). A sua implementação deve fazer o seguinte:

  1. Itera a coleção particular de filhos do teu elemento que fazem parte do layout, invoca Measure cada elemento filho.

  2. Entra DesiredSize imediatamente na criança (isto é definido como propriedade depois Measure de ser chamado).

  3. Calcule o tamanho líquido desejado do progenitor com base na medição dos elementos filhos.

O valor de retorno de MeasureOverride deve ser o tamanho desejado pelo elemento, que depois se torna a entrada de medida para o elemento pai do elemento atual. Este mesmo processo continua através do sistema de layout até ser atingido o elemento raiz da página.

Durante este processo, os elementos filho podem devolver um tamanho maior DesiredSize do que o inicial availableSize para indicar que o elemento filho precisa de mais espaço. Isto pode ser tratado na sua própria implementação, introduzindo uma região rolável, redimensionando o controlo dos pais, estabelecendo algum tipo de ordem empilhada, ou qualquer número de soluções para medir ou organizar conteúdos.

Importante

Os elementos devem chamar Measure cada filho durante este processo, caso contrário os elementos filhos não serão corretamente dimensionados ou dispostos.

Notas para Herdeiros

O seguinte código não compilante mostra este padrão de implementação. VisualChildren representa uma propriedade enumerável de colecção de filhos que o seu próprio elemento deve definir. A propriedade pode ter qualquer nome. VisualChildren é um nome provisório para efeitos deste exemplo, VisualChildren não é uma API como fornecida por WPF nem parte de um padrão de nomenclatura.

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

Aplica-se a