Compartir a través de


DebugSettings.LayoutCycleTracingLevel Propiedad

Definición

Obtiene o establece un valor que indica si el seguimiento del ciclo de diseño se escribe en el depurador nativo y el nivel de detalle que se registra.

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 de propiedad

Valor de la enumeración que indica si el seguimiento del ciclo de diseño se escribe en el depurador nativo y el nivel de detalle que se registra. El valor predeterminado es None.

Comentarios

Cuando un bloqueo de ciclo de diseño aparece inminente, este nivel de seguimiento se usa para determinar la cantidad de información de depuración que se conserva en los volcados de memoria y si se envía cualquier información al depurador nativo.

  • None - La información mínima del ciclo de diseño se conserva en excepciones permitidas en volcados de memoria. No hay ninguna salida en el depurador nativo.
  • Low - La información mínima del ciclo de diseño se conserva en excepciones permitidas en volcados de memoria. La misma información también se genera en el depurador nativo.
  • High - Se proporciona información más detallada sobre el ciclo de diseño que incluye todas las Measure llamadas y Arrange con sus availableSize valores y finalSize . La salida se conserva en excepciones permitidas en volcados de memoria. La misma información también se genera en el depurador nativo.

También puede establecer DebugSettings.LayoutCycleDebugBreakLevel para desencadenar un depurador nativo asociado para que se interrumpa durante eventos interesantes que conducen a un posible bloqueo del ciclo de diseño.

Diseño XAML

El diseño XAML es el proceso en el que los elementos reciben un tamaño y una posición. Por ejemplo, en un diseño vertical, a cada elemento secundario StackPanel se le asigna una posición de forma que se alinean horizontalmente y aparecen secuencialmente verticalmente.

La disposición de todos los elementos del árbol XAML es iterativa, donde el proceso de diseño puede provocar un cambio que desencadena otro paso de diseño. Se espera que este proceso converja, con un pase de diseño final que genera un resultado sin desencadenar ningún paso de diseño nuevo. Si el proceso no converge (cada paso de diseño desencadena otro pase de diseño), el proceso se finaliza y la aplicación se bloquea con una excepción de ciclo de diseño.

Errores del ciclo de diseño

De forma predeterminada, las aplicaciones XAML que experimentan un bloqueo del ciclo de diseño proporcionan información mínima para ayudarle a encontrar y corregir el problema:

Puede establecer LayoutCycleTracingLevel para enviar información de seguimiento del ciclo de diseño a la salida del depurador nativo, lo que facilita el acceso que el uso de excepciones permitidas y aumentar el nivel de detalle del registro del ciclo de diseño para proporcionar más información.

Esta es una salida de ejemplo para un bloqueo del ciclo de diseño que implica el control Slider :

[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"

Esta salida del registro muestra que el Width (y el tamaño deseado resultante) del HorizontalDecreaseRect elemento se alternan entre 866.400024 y 865.599976. Puede usar esta información para investigar aún más, incluido el uso de DebugSettings.LayoutCycleDebugBreakLevel para dividir en el depurador para investigar variables, para buscar cualquier problema en el código de diseño.

Estas son algunas de las propiedades comunes enumeradas en la salida de seguimiento:

  • LayoutCycleCountdown: Especifica el recuento de pases de diseño actual. El recuento de pases de diseño comienza en el número máximo permitido de pasos y cuenta hasta 0. Si el proceso de diseño no converge al final del paso 0, se produce una excepción de ciclo de diseño.
  • Classname: Nombre de clase de la FrameworkElement subclase asociada al mensaje.
  • Nombre:FrameworkElement.Name del FrameworkElement asociado al mensaje, si existe.
  • Ejemplo: Dirección de memoria de la representación interna del FrameworkElement asociado al mensaje. Esto es especialmente útil para filtrar por para realizar un seguimiento de los mensajes de instancias individuales.
  • TypeIndex: Representa el índice interno del FrameworkElement tipo de clase. Normalmente, esto se puede omitir.
  • Establecervalor: Cuando se establece una propiedad que afecta al diseño, se muestra el nombre de la propiedad y también se muestra el nuevo valor para algunos tipos de valor.
  • DesiredSize: Cuando el resultado de medir un FrameworkElement es un tamaño diferente al de la medida anterior, esto muestra el cambio en el tamaño deseado.

Se aplica a

Consulte también