DebugSettings.LayoutCycleTracingLevel Свойство

Определение

Возвращает или задает значение, указывающее, записывается ли трассировка цикла макета в собственный отладчик и уровень детализации, который записывается.

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

Значение свойства

Значение перечисления, указывающее, записывается ли трассировка цикла макета в собственный отладчик и уровень детализации, который записывается. Значение по умолчанию — None.

Комментарии

Когда возникает сбой цикла макета, этот уровень трассировки используется для определения того, какой объем сведений об отладке сохраняется в аварийных дампах и следует ли выводить какие-либо сведения в собственный отладчик.

  • None — Минимальные сведения о цикле макета сохраняются в уложенных исключениях в аварийных дампах. Нет выходных данных для собственного отладчика.
  • Low — Минимальные сведения о цикле макета сохраняются в уложенных исключениях в аварийных дампах. Те же сведения также передаются в собственный отладчик.
  • High — Предоставляется более подробная информация о цикле макета, которая включает все Measure вызовы и Arrange со значениями availableSize и finalSize . Выходные данные сохраняются в уложенных исключениях в аварийных дампах. Те же сведения также передаются в собственный отладчик.

Вы также можете настроить DebugSettings.LayoutCycleDebugBreakLevel , чтобы активировать подключенный собственный отладчик для прерывания во время интересных событий, приводящих к потенциальному сбою цикла макета.

Макет XAML

Макет XAML — это процесс, в котором элементам присваивается размер и положение. Например, в вертикальном StackPanel макете каждому дочернему элементу присваивается положение, которое выравнивается по горизонтали и отображается последовательно по вертикали.

Размещение всех элементов в дереве XAML является итеративным, где процесс макета может привести к изменению, которое вызывает другой проход макета. Ожидается, что этот процесс будет конвергентным, а окончательный этап макета приведет к результату без активации каких-либо новых этапов макета. Если процесс не сходится (каждый проход макета запускает другой этап макета), процесс завершается, и приложение завершает работу с исключением цикла макета.

Ошибки цикла макета

По умолчанию приложения XAML, которые испытывают сбой цикла макета, предоставляют минимальные сведения для поиска и устранения проблемы.

Вы можете настроить LayoutCycleTracingLevel отправку данных трассировки цикла макета в выходные данные собственного отладчика, что упрощает доступ по сравнению с использованием уложенных исключений, а также повышает детализацию ведения журнала цикла макета для предоставления дополнительных сведений.

Ниже приведен пример выходных данных для сбоя цикла макета с помощью элемента управления 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"

Эти выходные данные журнала показывают, что Width (и в результате требуемый HorizontalDecreaseRect размер) элемента переключается между 866,400024 и 865,599976. Эти сведения можно использовать для дальнейшего изучения, включая использование DebugSettings.LayoutCycleDebugBreakLevel для взлома отладчика для изучения переменных и поиска проблем в коде макета.

Ниже приведены некоторые общие свойства, перечисленные в выходных данных трассировки:

  • LayoutCycleCountdown: Указывает текущее число проходов макета. Количество проходов макета начинается с максимально допустимого прохода и отсчитывается до 0. Если процесс макета не сходится к концу прохода 0, возникает исключение цикла макета.
  • Classname: Имя класса подкласса, FrameworkElement связанного с сообщением.
  • Имя: Объект FrameworkElement.Name объекта , связанного FrameworkElement с сообщением, если таковой есть.
  • Экземпляр: Адрес памяти внутреннего представления объекта , FrameworkElement связанного с сообщением. Это особенно полезно для фильтрации для трассировки сообщений для отдельных экземпляров.
  • TypeIndex: Представляет внутренний индекс FrameworkElement типа класса. Обычно это можно игнорировать.
  • Setvalue: При установке свойства, влияющего на макет, отображается имя свойства, а также новое значение для некоторых типов значений.
  • Desiredsize: Если результат измерения FrameworkElement отличается от ранее измеренного, это показывает изменение требуемого размера.

Применяется к

См. также раздел