Partager via


DebugSettings.LayoutCycleTracingLevel Propriété

Définition

Obtient ou définit une valeur qui indique si le suivi du cycle de disposition est écrit dans le débogueur natif et le niveau de détail enregistré.

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

Valeur de propriété

Valeur de l’énumération qui indique si le suivi du cycle de disposition est écrit dans le débogueur natif et le niveau de détail enregistré. Par défaut, il s’agit de None.

Remarques

Lorsqu’un incident du cycle de disposition semble imminent, ce niveau de suivi est utilisé pour déterminer la quantité d’informations de débogage conservées dans les vidages sur incident et la sortie d’informations vers le débogueur natif.

  • None - Les informations minimales sur le cycle de disposition sont conservées dans les exceptions rangées dans les vidages sur incident. Il n’existe aucune sortie pour le débogueur natif.
  • Low - Les informations minimales sur le cycle de disposition sont conservées dans les exceptions rangées dans les vidages sur incident. Les mêmes informations sont également générées vers le débogueur natif.
  • High - Des informations plus détaillées sur le cycle de disposition sont fournies, qui incluent tous les Measure appels et Arrange avec leurs availableSize valeurs et finalSize . La sortie est conservée dans les exceptions rangées dans les vidages sur incident. Les mêmes informations sont également générées vers le débogueur natif.

Vous pouvez également définir DebugSettings.LayoutCycleDebugBreakLevel pour déclencher un débogueur natif attaché pour l’interrompre lors d’événements intéressants menant à un incident potentiel du cycle de disposition.

Disposition XAML

La disposition XAML est le processus où les éléments reçoivent une taille et une position. Par exemple, dans une disposition verticale StackPanel , chaque enfant reçoit une position telle qu’il s’aligne horizontalement et s’affiche séquentiellement verticalement.

La disposition de tous les éléments dans l’arborescence XAML est itérative, où le processus de disposition peut provoquer une modification qui déclenche une autre passe de disposition. Ce processus est censé converger, avec une passe de disposition finale produisant un résultat sans déclencher de nouvelles passes de disposition. Si le processus ne parvient pas à converger (chaque passe de disposition déclenche une autre passe de disposition), le processus est terminé et l’application se bloque avec une exception de cycle de disposition.

Erreurs de cycle de disposition

Par défaut, les applications XAML qui rencontrent un incident de cycle de disposition fournissent un minimum d’informations pour vous aider à trouver et à résoudre le problème :

Vous pouvez définir LayoutCycleTracingLevel pour envoyer les informations de suivi du cycle de disposition à la sortie du débogueur natif, ce qui facilite l’accès à l’utilisation d’exceptions rangées, et pour augmenter le détail de la journalisation du cycle de disposition pour fournir plus d’informations.

Voici quelques exemples de sortie pour un incident de cycle de disposition impliquant le contrôle 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"

Cette sortie de journal indique que (et la Width taille souhaitée résultante) de l’élément HorizontalDecreaseRect bascule entre 866.400024 et 865.599976. Vous pouvez utiliser ces informations pour examiner plus en détail, notamment à l’aide de DebugSettings.LayoutCycleDebugBreakLevel pour entrer dans le débogueur afin d’examiner les variables, afin de trouver des problèmes dans votre code de disposition.

Voici quelques-unes des propriétés courantes répertoriées dans la sortie de suivi :

  • LayoutCycleCountdown : Spécifie le nombre de passes de disposition actuel. Le nombre de passes de disposition commence au maximum de passes autorisées et compte jusqu’à 0. Si le processus de disposition ne converge pas à la fin du pas 0, une exception de cycle de disposition se produit.
  • Classname: Nom de classe de la FrameworkElement sous-classe associée au message.
  • Nom:FrameworkElement.Name de associé FrameworkElement au message, le cas échéant.
  • Exemple: Adresse mémoire de la représentation interne du FrameworkElement associé au message. Cela est particulièrement utile pour filtrer afin de suivre les messages pour des instances individuelles.
  • TypeIndex : Représente l’index interne du type de FrameworkElement classe. Cela peut généralement être ignoré.
  • SetValue : Lorsqu’une propriété qui affecte la disposition est définie, celle-ci répertorie le nom de la propriété et répertorie également la nouvelle valeur pour certains types de valeurs.
  • DesiredSize : Lorsque le résultat de la mesure d’un FrameworkElement est d’une taille différente de celle précédemment mesurée, cela montre la modification de la taille souhaitée.

S’applique à

Voir aussi