Должен ли я всегда использовать BindingBase.FallbackValue? - PullRequest
1 голос
/ 22 марта 2011

Привет,

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

Мой вопрос: должен ли я всегда устанавливать событие-значение Fallback, если оно должно быть: FallbackValue = ""?

Какое влияние на память / производительность / другие данные оказывают / не используют FallbackValue?

Ответы [ 2 ]

2 голосов
/ 22 марта 2011

Вам вряд ли стоит когда-либо использовать FallbackValue.

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

Самая большая проблема с производительностьюЗдесь вас поразит стоимость неудачной привязки данных (обычно они включают исключения и намного дороже, чем успешные привязки).Использование FallbackValue может скрыть такие проблемы с производительностью.Поэтому я бы сказал, что использование FallbackValue, как правило, ухудшает производительность (но, как всегда, зависит)

1 голос
/ 22 марта 2011

Я лично рекомендую указывать FallbackValue, если вы не зависите от нагрузки для обеспечения функциональности , если только вы не уверены , что загрузка никогда не выйдет из строя.Существует несколько способов сбоя загрузки, и если ваше изображение и т. Д. На самом деле не влияют на функциональность, вашему пользователю будет сложно отказать в программе только потому, что логотип вашей компании не загружается из-за поврежденного файла или чего-то еще...

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

FallbackValue также можно использовать вприоритетные источники изображений.Здесь вы запускаете асинхронную загрузку ресурса где-то еще (возможно, через Интернет), и до завершения загрузки будет доступно ваше запасное значение.Например, вы можете использовать запасное значение для предоставления изображения заполнителя до того, как ваши изображения вернутся.И если загрузка изображения (из Интернета) не удалась, вместо пустого пространства вместо вас будет заполнитель - иногда наличие пустого пространства недопустимо из-за проблем с размером элементов экрана (вещи исчезают при отсутствии размера).

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

...