Уже почти год пользую одну замечательную опенсорсную утилиту для отладки WPF-приложений.
Snoop (не самое информативное название для программы) позволяет посмотреть VisualTree WPF приложения.
Вообще возможностей у тулзы немного и рассказ будет коротким, но она просто незаменима при отладке. Позволяет не только понять где и какой Margin/Padding пагубно влияет на положение элемента, но и поможет разобраться с логикой построения элементов управления в wpf.
Главное окно программы

Окно лупы.
Открываем Snoop, выбираем из списка запущенных wpf-приложений нужное и жмём Magnify (кнопка лупой).
Открывается окошко с содержимым нашего приложения, его можно зумить, двигать… ну и т.д.
Есть 3d представление. по 3тей оси компоненты располагаются относительно своей позиции в дереве.

Окно свойств и событий
Закрываем окошко с зумом и жмём на копку Snoop this application (бинокль). И вот тут открывается совершенно замечательное окошко.

В левой части располагается дерево компонентов.
Если навести на элемент, то выскакивает его привьюшка.
Сверху комбобокс с фильтром дерева. Поиск по слову и поиск компонентов с ошибками биндинга.
В правой части показываются свойства и события выбранного элемента дерева.
Кнопка с многоговорящим названием и не менее информативной картинкой показывает/прячет дефолтовые свойства.

Интересные фичи:
Свойства
Позволяет смотреть какие RoutedEvent`ы случились у выбранного элемента. можно выбрать из списка за каким событиями будем следить.

Итого:
Надо признать, утилита не особа удобная, недоделанная и за 1,5-2 года ничего нового в ней не появилось… но часто бывает просто незаменимой. :)
идёт она с исходниками на C# и C++, а значит можно будет написать собственную.
В общем, огромное спасибо Pete Blois. скачать можно тут.
Snoop (не самое информативное название для программы) позволяет посмотреть VisualTree WPF приложения.
Вообще возможностей у тулзы немного и рассказ будет коротким, но она просто незаменима при отладке. Позволяет не только понять где и какой Margin/Padding пагубно влияет на положение элемента, но и поможет разобраться с логикой построения элементов управления в wpf.
Главное окно программы

Окно лупы.
Открываем Snoop, выбираем из списка запущенных wpf-приложений нужное и жмём Magnify (кнопка лупой).
Открывается окошко с содержимым нашего приложения, его можно зумить, двигать… ну и т.д.
Есть 3d представление. по 3тей оси компоненты располагаются относительно своей позиции в дереве.

Окно свойств и событий
Закрываем окошко с зумом и жмём на копку Snoop this application (бинокль). И вот тут открывается совершенно замечательное окошко.

В левой части располагается дерево компонентов.
Если навести на элемент, то выскакивает его привьюшка.
Сверху комбобокс с фильтром дерева. Поиск по слову и поиск компонентов с ошибками биндинга.
В правой части показываются свойства и события выбранного элемента дерева.
Кнопка с многоговорящим названием и не менее информативной картинкой показывает/прячет дефолтовые свойства.
Интересные фичи:
- выбранный элемент подсвечивается в самом wpf-приложении
- выбрать нужный элемент можно прямо в wpf-приложении. Жмём Ctrl-Shift и водим мышкой по форме.
- Если значение свойства меняется, то оно подсвечивается на несколько секунд желтым.
- Серым подсвечиваются свойства с неустановленным значением.
- По заявлению автора, значения свойств можно менять прямо из Snoop… но у меня ничего не менялось. (позже поковыряю исходники)
Свойства
Позволяет смотреть какие RoutedEvent`ы случились у выбранного элемента. можно выбрать из списка за каким событиями будем следить.
Итого:
Надо признать, утилита не особа удобная, недоделанная и за 1,5-2 года ничего нового в ней не появилось… но часто бывает просто незаменимой. :)
идёт она с исходниками на C# и C++, а значит можно будет написать собственную.
В общем, огромное спасибо Pete Blois. скачать можно тут.