FrameworkElement.MeasureOverride(Size) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Quando substituído em uma classe derivada, mede o tamanho no layout necessário para elementos filho e determina um tamanho para a FrameworkElementclasse derivada.
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 esse elemento pode dar aos elementos filho. O infinito pode ser especificado como um valor para indicar que o elemento será dimensionado para qualquer conteúdo disponível.
Retornos
O tamanho que esse elemento determina que precisa durante o layout, com base em seus cálculos de tamanhos de elemento filho.
Comentários
Substitua MeasureOverride para implementar o comportamento de dimensionamento de layout personalizado para o elemento, pois ele participa do sistema de layout Windows Presentation Foundation (WPF). Sua implementação deve fazer o seguinte:
Iterar a coleção específica de filhos do elemento que fazem parte do layout, chamar Measure cada elemento filho.
Entre imediatamente DesiredSize no filho (isso é definido como uma propriedade após Measure ser chamado).
Compute o tamanho da rede desejada do pai com base na medida dos elementos filho.
O valor retornado MeasureOverride deve ser o próprio tamanho desejado do elemento, que se torna a entrada de medida para o elemento pai do elemento atual. Esse mesmo processo continua por meio do sistema de layout até que o elemento raiz da página seja atingido.
Durante esse processo, os elementos filho podem retornar um tamanho maior DesiredSize do que o inicial availableSize para indicar que o elemento filho deseja mais espaço. Isso pode ser tratado em sua própria implementação introduzindo uma região rolável, redimensionando o controle pai, estabelecendo algum tipo de ordem empilhada ou qualquer número de soluções para medir ou organizar conteúdo.
Importante
Os elementos devem chamar Measure cada filho durante esse processo, caso contrário, os elementos filho não serão dimensionados ou organizados corretamente.
Notas aos Herdeiros
O código de não compilação a seguir mostra esse padrão de implementação.
VisualChildren representa uma propriedade de coleção enumerável de filhos que seu próprio elemento deve definir. A propriedade pode ser nomeada qualquer coisa.
VisualChildren é um nome de espaço reservado para fins deste exemplo, VisualChildren não é uma API, conforme fornecido por WPF ou uma 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