DebugSettings.LayoutCycleTracingLevel Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau menetapkan nilai yang menunjukkan apakah pelacakan siklus tata letak ditulis ke debugger asli dan tingkat detail yang direkam.
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
Nilai Properti
Nilai enumerasi yang menunjukkan apakah pelacakan siklus tata letak ditulis ke debugger asli dan tingkat detail yang dicatat. Default adalah None
.
Keterangan
Ketika siklus tata letak crash muncul segera, tingkat pelacakan ini digunakan untuk menentukan berapa banyak informasi penelusuran kesalahan yang dipertahankan dalam crash dump dan apakah akan menghasilkan informasi apa pun ke debugger asli.
-
None
- Informasi siklus tata letak minimal dipertahankan dalam pengecualian tersimpan dalam crash dump. Tidak ada output untuk debugger asli. -
Low
- Informasi siklus tata letak minimal dipertahankan dalam pengecualian tersimpan dalam crash dump. Informasi yang sama juga dihasilkan ke debugger asli. -
High
- Lebih banyak informasi siklus tata letak verbose disediakan yang mencakup semuaMeasure
danArrange
panggilan dengan nilai danfinalSize
merekaavailableSize
. Output dipertahankan dalam pengecualian tersimpan dalam crash dump. Informasi yang sama juga dihasilkan ke debugger asli.
Anda juga dapat mengatur DebugSettings.LayoutCycleDebugBreakLevel untuk memicu debugger asli yang terpasang untuk istirahat selama peristiwa menarik yang mengarah ke potensi crash siklus tata letak.
Tata letak XAML
Tata letak XAML adalah proses di mana elemen diberi ukuran dan posisi. Misalnya, dalam tata letak vertikal StackPanel
, setiap anak diberi posisi sehingga mereka selaras secara horizontal dan muncul secara berurutan secara vertikal.
Meletakkan semua elemen di pohon XAML bersifat berulang, di mana proses tata letak dapat menyebabkan perubahan yang memicu tata letak lain berlalu. Proses ini diharapkan bertemu, dengan tata letak akhir lulus menghasilkan hasil tanpa memicu lolos tata letak baru. Jika proses gagal bertemu (setiap kode tata letak memicu kode tata letak lain), proses dihentikan dan aplikasi mengalami crash dengan pengecualian siklus tata letak.
Kesalahan siklus tata letak
Secara default, aplikasi XAML yang mengalami crash siklus tata letak memberikan informasi minimal untuk membantu Anda menemukan dan memperbaiki masalah:
- Peristiwa Application.UnhandledException dinaikkan dan memberi tahu Anda bahwa crash disebabkan oleh masalah siklus tata letak.
- Beberapa informasi disimpan dalam pengecualian yang di-stow.
Anda dapat mengatur LayoutCycleTracingLevel
untuk mengirim informasi pelacakan siklus tata letak ke output debugger asli, yang membuatnya lebih mudah diakses daripada menggunakan pengecualian bertingkat, dan untuk meningkatkan verbositas pengelogan siklus tata letak untuk memberikan informasi lebih lanjut.
Berikut adalah beberapa contoh output untuk crash siklus tata letak yang melibatkan kontrol 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"
Output log ini menunjukkan bahwa Width
(dan menghasilkan ukuran yang diinginkan) dari HorizontalDecreaseRect
elemen ini beralih antara 866.400024 dan 865.599976. Anda dapat menggunakan informasi ini untuk menyelidiki lebih lanjut, termasuk menggunakan DebugSettings.LayoutCycleDebugBreakLevel untuk masuk ke debugger untuk menyelidiki variabel, untuk menemukan masalah dalam kode tata letak Anda.
Ini adalah beberapa properti umum yang tercantum dalam output pelacakan:
- LayoutCycleCountdown: Menentukan jumlah lolos tata letak saat ini. Jumlah pass tata letak dimulai pada batas maksimum yang diizinkan dan dihitung ke bawah hingga 0. Jika proses tata letak tidak bertemu pada akhir pass 0, maka pengecualian siklus tata letak terjadi.
-
ClassName: Nama
FrameworkElement
kelas subkelas yang terkait dengan pesan. -
Nama:
FrameworkElement.Name
dari yangFrameworkElement
terkait dengan pesan, jika ada. -
Sebagai contoh: Alamat memori representasi internal yang
FrameworkElement
terkait dengan pesan. Ini sangat berguna untuk memfilter untuk melacak pesan untuk instans individual. -
TypeIndex: Mewakili indeks internal jenis
FrameworkElement
kelas. Ini biasanya dapat diabaikan. - SetValue: Saat properti yang memengaruhi tata letak diatur, ini mencantumkan nama properti dan juga mencantumkan nilai baru untuk beberapa jenis nilai.
-
DesiredSize: Ketika hasil pengukuran adalah ukuran yang berbeda dari ketika sebelumnya diukur, ini menunjukkan perubahan ukuran yang
FrameworkElement
diinginkan.