UIElement.MeasureCore(Size) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Quando sobreposto numa classe derivada, fornece lógica de medição para dimensionar corretamente este elemento, considerando o tamanho de qualquer conteúdo de elemento filho.
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 progenitor pode atribuir à criança.
Devoluções
O tamanho desejado deste elemento na disposição.
Exemplos
Uma sobreposição típica de MeasureCore segue este padrão aproximado (não existe uma coleção incorporada chamada VisualChildren; VisualChildren é um marcador de posição que representa a coleção filha que o seu elemento mantém).
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
Deves invocar Measure cada elemento filho.
Geralmente, a sua implementação deve armazenar em cache a informação de medição entre as MeasureCore chamadas de método e ArrangeCore no mesmo elemento.
Chamar implementações base de MeasureCore não é obrigatório, mas pode ser apropriado se a implementação base fornecer uma capacidade de layout desejada.
As chamadas a Measure elementos filhos on devem passar pelo mesmo
availableSizeque o pai, ou por um subconjunto da área, dependendo do tipo de layout que o elemento pai suporta. Por exemplo, seria válido remover a área para uma borda ou enchimento específico de um elemento, uma barra de scroll ou um controlo personalizado.
Observações
É mais comum derivar um elemento de em vez de FrameworkElementUIElement. Se estiver a derivar de FrameworkElement, note que uma sobreposição de MeasureCore on FrameworkElement sela o MeasureCore método. Portanto, só se sobrepõe MeasureCore como meio de alterar as características da medida de layout se derivar de UIElement através de uma herança que não inclua FrameworkElement. Isto pode acontecer se estiveres a tentar construir a tua própria implementação ao nível do núcleo do WPF. Caso contrário, se estiver a derivar de FrameworkElement, então o modelo de implementação para o comportamento da medida é a FrameworkElement implementação de .MeasureOverride.
Um elemento pai com elementos filhos deve chamar Measure cada filho, caso contrário estes elementos filhos não são dimensionados ou organizados e desaparecem efetivamente do layout.
Notas para Herdeiros
As implementações devem ser capazes de processar um valor fornecido para availableSize que seja infinito. Um valor infinito indica que não há restrições solicitadas e efetivamente delega a escolha da medição para o elemento pai, através de chamadas recursivas de Medida.
As implementações podem considerar o valor fornecido como availableSize uma restrição suave. O elemento filho pode especificar um tamanho maior, mesmo que outros aspetos do código da aplicação consigam determinar o tamanho real atual do elemento pai. O pedido de grande tamanho é uma convenção que indica que o elemento filho está a consultar se o seu elemento pai pode suportar a rolagem de conteúdo dentro de uma região de visualização de conteúdo.