Правильное поведение, если связанное свойство не может предоставить значение - PullRequest
2 голосов
/ 20 марта 2019

У меня есть ListBox, который содержит большой список изображений для предварительного просмотра.Изображения загружаются из Интернета и кэшируются локально, когда пользователь прокручивает их.Для этого используется привязка AsyncPreview_120, которая загружает изображение и возвращает путь к кешированному файлу.Если это не удается, пользовательский преобразователь используется для создания запасного изображения на основе имени файла.

<Image.Source>
  <PriorityBinding FallbackValue="{StaticResource DefaultImage}">
    <Binding Path="AsyncPreview_120" IsAsync="True" />
    <Binding Path="FileName" Converter="{StaticResource nameToImageSourceConverter}" IsAsync="True" />
  </PriorityBinding>
</Image.Source>

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

Я пытался:

  • Возвратnull
  • Возврат пустой строки
  • Бросок NotSupportedException
  • Возврат DependencyProperty.UnsetValue

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

1 Ответ

2 голосов
/ 20 марта 2019

Использовать Binding.DoNothing Binding.DoNothing

Свойство источника привязки или преобразователь может возвращать Binding.DoNothing, чтобы заставить механизм привязки не выполнять никаких действий.Например, чтобы дать указание механизму привязки не передавать значение в цель привязки, не переходить к следующей привязке в PriorityBinding или не использовать значение FallBackValue или значение по умолчанию.

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