UIElement.Measure(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.
Atualiza o DesiredSize de um UIElement. Normalmente, os objetos que implementam o layout personalizado para seus filhos de layout chamam esse método de suas próprias implementações measureOverride para formar uma atualização de layout recursivo.
public:
virtual void Measure(Size availableSize) = Measure;
void Measure(Size const& availableSize);
public void Measure(Size availableSize);
function measure(availableSize)
Public Sub Measure (availableSize As Size)
Parâmetros
- availableSize
- Size
O espaço disponível que um pai pode alocar a um objeto filho. Um objeto filho pode solicitar um espaço maior do que o que está disponível; o tamanho fornecido poderá ser acomodado se a rolagem ou outro comportamento de redimensionamento for possível nesse contêiner específico.
Exemplos
Este exemplo implementa MeasureOverride para personalizar a lógica de passagem "Medida" para uma implementação de painel personalizado. Observe, em particular, estes aspectos do código:
- Itera sobre crianças.
- Para cada filho, chama Medida, usando um Tamanho que faz sentido com base em como a lógica do painel trata o número de filhos e seu próprio limite de tamanho conhecido.
- Retorna seu tamanho (nesse caso, esse painel simples retorna um tamanho fixo em vez de um tamanho calculado ao acumular as medidas).
// First measure all children and return available size of panel
protected override Size MeasureOverride(Size availableSize)
{
// Measure first 9 children giving them space up to 100x100, remaining children get 0x0
int i = 0;
foreach (FrameworkElement child in Children)
{
if (i < 9)
{
child.Measure(new Size(100, 100));
}
else
{
child.Measure(new Size(0, 0));
}
i++;
}
// return the size available to the whole panel, which is 300x300
return new Size(300, 300);
}
Comentários
A chamada De medida potencialmente atinge uma implementação MeasureOverride dessa classe específica. Caso contrário, a maioria das classes FrameworkElement tem um comportamento de layout padrão implícito para Medida.
availableSize pode ser qualquer número de zero a infinito. Os elementos participantes do layout devem retornar o tamanho mínimo necessário para um determinado availableSize.
A computação do posicionamento inicial do layout em uma interface do usuário XAML consiste em uma chamada de medida e uma chamada Arrange , nessa ordem. Durante a chamada de medida, o sistema de layout determina os requisitos de tamanho de um elemento usando a medida availableSize . Durante a chamada Organizar , o sistema de layout finaliza o tamanho e a posição da caixa delimitadora de um elemento.
Quando um layout é produzido pela primeira vez, ele sempre tem uma chamada de medida que acontece antes de Organizar. No entanto, após a primeira passagem de layout, uma chamada arrange pode acontecer sem uma Medida anterior a ela. Isso pode acontecer quando uma propriedade que afeta apenas Arrange é alterada (como alinhamento) ou quando o pai recebe uma Organização sem uma Medida.
Uma chamada de medida invalidará automaticamente qualquer informação de Organização . As atualizações de layout geralmente ocorrem de forma assíncrona (em um momento determinado pelo sistema de layout). Um elemento pode não refletir imediatamente as alterações nas propriedades que afetam o dimensionamento do elemento (como Largura).
Aplica-se a
Confira também
- MeasureOverride(Size)
- ArrangeOverride(Size)
- Definir layouts com XAML