2011-12-21 2 views
8

Когда я рисую макет на веб-странице, используя CSS, могут существовать десятки правил, разбросанных по десяткам файлов, что может повлиять на отображение фактического элемента. Именно поэтому исследователи DOM являются такими важными инструментами - я могу выбрать элемент в браузере и точно увидеть, какие правила CSS применяются к нему.Есть ли эквивалент WPF для DOM-проводника?

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

Есть ли способ взглянуть на элемент, скажем, ComboBox, и быстро определить, почему он рисует в три раза выше, чем я думаю?

ответ

6

Лично я использую Ищейку. Я не знаком с Молом, но я слышал, что он «лучше» (субъективный), хотя он не является бесплатным. Существует трюк для работы со Snoop, хотя, если у вас есть окно, которое не является основным окном, вы можете настроить его, выполнив Ctrl + Shift + MouseOver (который фактически нацелен на текущий визуальный контроль). Мне потребовалось некоторое время, чтобы понять, и это очень полезно!

+0

Это позволяет мне просматривать дерево и атрибуты каждого элемента. Но это не помогает мне найти источник каждого атрибута. Например, я вижу, что у моего ComboBox есть ActualHeight из 40, а RenderSize - 200,40, но я не знаю, почему у него есть ActualHeight из 40. –

+0

@Jeff Dege: Value Source. Кроме того, вы можете щелкнуть правой кнопкой мыши и выбрать «Delve» для свойства. Я не могу сказать, какая у вас проблема, но эти два инструмента - это то, что вам нужно. Не стесняйтесь публиковать код и просить о помощи в отдельном вопросе. –

0

Один бесплатный инструмент, который я использую время от времени, - Snoop. Это хорошо для простых вещей, но может привести к сбою в сложных вещах.

0

Позиция/размер макета визуальных изображений WPF не вычисляется в соответствии с некоторыми декларативными наборами правил в виде CSS. Разметка WPF происходит с использованием императивного кода, поэтому невозможно узнать, глядя на начальный XAML или полученное визуальное дерево, как это было достигнуто.

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

Смежные вопросы