Ошибка производительности связывания WPF против исключения - PullRequest
7 голосов
/ 07 апреля 2010

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

System.Windows.Data Ошибка: 39: Ошибка пути BindingExpression: Свойство 'RoundingFactor' не найдено на 'object' '' MultiLineTextMarkingScheme ' (HashCode = 7262386). BindingExpression: Path = RoundingFactor; ..........

Это не является исключением, но мы обеспокоены тем, что это влияет на производительность.

Должны ли мы быть обеспокоены и создать модель представления, которая имеет все свойства, с которыми мы хотим связать (и свойства, которые не существуют в базовом элементе, возвращают нуль) или мы можем просто оставить его.

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

Ответы [ 2 ]

16 голосов
/ 18 апреля 2013

Я не проверял это сам, но в блоге от команды Visual Studio говорится, что ошибки привязки действительно влияют на производительность:

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

6 голосов
/ 07 апреля 2010

Вы видите этот вывод только потому, что работаете в Visual Studio. Обычно эти операторы трассировки никуда не идут, потому что нет прослушивателя трассировки. В любом случае, влияние на производительность совершенно незначительно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...