Partilhar via


DebugSettings.LayoutCycleTracingLevel Propriedade

Definição

Obtém ou define um valor que indica se o rastreamento do ciclo de layout é gravado no depurador nativo e o nível de detalhes que é registrado.

public:
 property LayoutCycleTracingLevel LayoutCycleTracingLevel { LayoutCycleTracingLevel get(); void set(LayoutCycleTracingLevel value); };
LayoutCycleTracingLevel LayoutCycleTracingLevel();

void LayoutCycleTracingLevel(LayoutCycleTracingLevel value);
public LayoutCycleTracingLevel LayoutCycleTracingLevel { get; set; }
var layoutCycleTracingLevel = debugSettings.layoutCycleTracingLevel;
debugSettings.layoutCycleTracingLevel = layoutCycleTracingLevel;
Public Property LayoutCycleTracingLevel As LayoutCycleTracingLevel

Valor da propriedade

Um valor da enumeração que indica se o rastreamento do ciclo de layout é gravado no depurador nativo e o nível de detalhes que é registrado. O padrão é None.

Comentários

Quando uma falha de ciclo de layout parece iminente, esse nível de rastreamento é usado para determinar quanta informação de depuração é preservada em despejos de memória e se deseja gerar informações para o depurador nativo.

  • None – As informações mínimas do ciclo de layout são preservadas em exceções em despejos de memória. Não há saída para o depurador nativo.
  • Low – As informações mínimas do ciclo de layout são preservadas em exceções em despejos de memória. As mesmas informações também são geradas para o depurador nativo.
  • High - Informações mais detalhadas do ciclo de layout são fornecidas que incluem todas as Measure chamadas e Arrange com seus availableSize valores e finalSize . A saída é preservada em exceções em despejos de memória. As mesmas informações também são geradas para o depurador nativo.

Você também pode definir DebugSettings.LayoutCycleDebugBreakLevel para disparar um depurador nativo anexado para interromper durante eventos interessantes que levam a uma possível falha no ciclo de layout.

Layout XAML

O layout XAML é o processo em que os elementos recebem um tamanho e uma posição. Por exemplo, em um layout vertical StackPanel , cada filho recebe uma posição de modo que se alinhe horizontalmente e apareça sequencialmente verticalmente.

A colocação de todos os elementos na árvore XAML é iterativa, em que o processo de layout pode causar uma alteração que dispara outra passagem de layout. Espera-se que esse processo converga, com um passe de layout final produzindo um resultado sem disparar novas passagens de layout. Se o processo não convergir (cada passagem de layout dispara outra passagem de layout), o processo é encerrado e o aplicativo falha com uma exceção de ciclo de layout.

Erros de ciclo de layout

Por padrão, os aplicativos XAML que experimentam uma falha no ciclo de layout fornecem informações mínimas para ajudá-lo a encontrar e corrigir o problema:

Você pode definir LayoutCycleTracingLevel para enviar informações de rastreamento do ciclo de layout para a saída do depurador nativo, o que facilita o acesso do que o uso de exceções restritas e aumentar a verbosidade do log do ciclo de layout para fornecer mais informações.

Aqui está um exemplo de saída para uma falha de ciclo de layout envolvendo o controle Controle deslizante :

[LayoutCycleTracing] "SetValue(Width=866.400024)","LayoutCycleCountdown: 7","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "DesiredSize changed, old: 865.599976x0.000000 new: 866.400024x0.000000","LayoutCycleCountdown: 6","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "SetValue(Width=865.599976)","LayoutCycleCountdown: 4","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "DesiredSize changed, old: 866.400024x0.000000 new: 865.599976x0.000000","LayoutCycleCountdown: 3","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "SetValue(Width=866.400024)","LayoutCycleCountdown: 1","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"
[LayoutCycleTracing] "DesiredSize changed, old: 865.599976x0.000000 new: 866.400024x0.000000","LayoutCycleCountdown: 0","ClassName: Microsoft.UI.Xaml.Shapes.Rectangle","Name: HorizontalDecreaseRect","Instance: 0x000001C67FB0EE70","TypeIndex: 701"

Essa saída de log mostra que o Width (e o tamanho desejado resultante) do HorizontalDecreaseRect elemento está alternando entre 866,400024 e 865,599976. Você pode usar essas informações para investigar mais, incluindo o uso de DebugSettings.LayoutCycleDebugBreakLevel para invadir o depurador para investigar variáveis, para encontrar quaisquer problemas no código de layout.

Essas são algumas das propriedades comuns listadas na saída de rastreamento:

  • LayoutCycleCountdown: Especifica a contagem de aprovação de layout atual. A contagem de aprovação de layout começa no máximo de passes permitidos e conta até 0. Se o processo de layout não convergir até o final da passagem 0, ocorrerá uma exceção de ciclo de layout.
  • Classname: O nome da classe da FrameworkElement subclasse associada à mensagem.
  • Nome: O FrameworkElement.Name do FrameworkElement associado à mensagem, se houver.
  • Instância: O endereço de memória da representação interna do FrameworkElement associado à mensagem. Isso é particularmente útil para filtrar para rastrear mensagens para instâncias individuais.
  • TypeIndex: Representa o índice interno do FrameworkElement tipo de classe. Isso geralmente pode ser ignorado.
  • Setvalue: Quando uma propriedade que afeta o layout é definida, ela lista o nome da propriedade e também lista o novo valor para alguns tipos de valor.
  • Desiredsize: Quando o resultado da medição de um FrameworkElement é um tamanho diferente de quando foi medido anteriormente, isso mostra a alteração no tamanho desejado.

Aplica-se a

Confira também