UIElement.Arrange(Rect) 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.
Posiciona elementos filho e determina um tamanho para um UIElement. Os elementos pai chamam esse método de sua ArrangeCore(Rect) implementação (ou um equivalente no nível da estrutura do WPF) para formar uma atualização de layout recursivo. Esse método constitui a segunda passagem de uma atualização de layout.
public:
void Arrange(System::Windows::Rect finalRect);
public void Arrange(System.Windows.Rect finalRect);
member this.Arrange : System.Windows.Rect -> unit
Public Sub Arrange (finalRect As Rect)
Parâmetros
- finalRect
- Rect
O tamanho final que o pai calcula para o elemento filho, fornecido como uma Rect instância.
Comentários
Para WPF cenários de derivação de elemento de nível de estrutura, o comportamento de Arrange não deve (e não pode, a menos que você sombree) ser alterado. Em vez disso, você deve substituir a ArrangeOverride implementação em sua classe. Sua implementação de ArrangeOverride é chamada internamente por Arrange como parte das operações de layout padrão no nível da estrutura WPF. Sua ArrangeCore implementação também deve chamar ArrangeOverride cada elemento filho, se ele tiver elementos filho.
Para WPF cenários de derivação de elemento de nível central, o comportamento de Arrange não deve (e não pode, a menos que você sombree) ser alterado. Em vez disso, você deve substituir ArrangeCore em sua classe. Sua implementação de ArrangeCore é chamada internamente por Arrange como parte das operações de layout padrão no nível da estrutura WPF. No entanto, isso pressupõe que você esteja usando WPF layout de nível de estrutura e seu sistema de layout, o que geralmente não é o caso se você estiver derivando especificamente elementos no nível de núcleo WPF da classe de elemento base UIElement. Sua ArrangeCore implementação também deve chamar Arrange cada elemento filho, se ele tiver elementos filho. Observe que o WPF cenário de nível principal implica que você não está usando uma classe derivada FrameworkElement, porque FrameworkElement sela ArrangeCore.
A computação de WPF posicionamento de layout no nível da estrutura em Windows Presentation Foundation (WPF) consiste em uma chamada Measure e uma chamada Arrange. Durante a Measure chamada, o sistema de layout determina os requisitos de tamanho de um elemento usando um argumento fornecido Size (availableSize). Durante a Arrange chamada, o sistema de layout finaliza o tamanho e a posição da caixa delimitadora de um elemento. Para obter mais informações, consulte Layout.
availableSize pode ser qualquer número de zero a infinito. Os elementos a serem dispostos retornam o mínimo Size necessário por meio do availableSize parâmetro.
Quando um layout é instanciado pela primeira vez, ele sempre recebe uma Measure chamada antes Arrange. No entanto, após a primeira passagem de layout, ele pode receber uma Arrange chamada sem um Measure; isso pode acontecer quando uma propriedade que afeta apenas Arrange é alterada (como alinhamento) ou quando o pai recebe um Arrange sem um Measure. Uma Measure chamada invalidará automaticamente uma Arrange chamada.
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).
Note
As atualizações de layout podem ser forçadas usando o UpdateLayout método; no entanto, não é recomendável chamar essa função, pois ela geralmente é desnecessária e pode causar um desempenho ruim. Em muitas situações em que a chamada UpdateLayout pode ser apropriada, o sistema de layout provavelmente já estará processando atualizações. O sistema de layout pode processar alterações de layout de uma maneira que possa otimizar todas as atualizações necessárias como parte de um pacote.
O sistema de layout mantém duas filas separadas de layouts inválidos, uma para Measure e outra para Arrange. A fila de layout é classificada com base na ordem dos elementos na árvore visual. Elementos mais altos na árvore estão na parte superior da fila, a fim de evitar layouts redundantes causados por alterações repetidas nos pais. As entradas duplicadas são removidas automaticamente da fila e os elementos são removidos automaticamente da fila se já forem válidos.
Ao atualizar o layout, a Measure fila é esvaziada primeiro, seguida pela Arrange fila. Um elemento na Arrange fila nunca será organizado se houver um elemento na Measure fila.