Как я могу отследить, что происходит во время загрузки XAML? - PullRequest
3 голосов
/ 30 июня 2009

Я хотел бы найти способ посмотреть, что происходит, когда загружается мой XAML. Какие классы создаются и в каком порядке? Какие свойства устанавливаются, каким значениям и в каком порядке? Какие методы вызываются (например, BeginInit, EndInit и т. Д.), В каком порядке и с какими параметрами? Такого рода вещи.

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

У кого-нибудь есть другие идеи о том, как мне получить представление о том, что делает загрузчик XAML? Существуют ли какие-либо инструменты (возможно, профилировщик?), Которые могут дать мне график вызовов? Есть ли способ включить какую-то регистрацию в загрузчике XAML? Мысли / предложения?


Редактировать: Статья, на которую ссылается Стив, имеет ответ, хотя их пример кода заставляет каждое событие отображаться дважды. Для справки, вот как это сделать в коде (никаких изменений в app.config не требуется). Добавьте эти строки перед вызовом InitializeComponent () (или введите обе строки в окно Immediate в отладчике):

PresentationTraceSources.Refresh();
PresentationTraceSources.MarkupSource.Switch.Level = SourceLevels.All;

Это приведет к тому, что в окне вывода VS появится подробный вывод, включая свойства, которые волшебным образом устанавливаются за кулисами.

1 Ответ

1 голос
/ 30 июня 2009

Вы можете отслеживать большую часть привязки и загрузки с помощью system.diagnostics . Я обнаружил ряд проблем с использованием этого пространства имен. Это громоздко, как и все остальное в WPF, но это работает. Вы можете видеть, что и где устанавливается.

...