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ções o DesiredSize de um UIElement. Normalmente, objetos que implementam 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 recursiva.
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 "Measure" para uma implementação de painel personalizado. Observe, em particular, estes aspectos do código:
- Itera sobre crianças.
- Para cada filho, chama Measure, usando um Size 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 Measure atinge potencialmente 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 Measure.
availableSize pode ser qualquer número de zero a infinito. Os elementos que participam 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 measure e uma chamada Arrange , nessa ordem. Durante a chamada Measure, 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 measure que acontece antes de Arrange. No entanto, após a primeira passagem de layout, uma chamada Arrange pode ocorrer sem uma Medida antes dela. Isso pode acontecer quando uma propriedade que afeta apenas Arrange é alterada (como alinhamento) ou quando o pai recebe um Arrange 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 Width).