Привязка WPF isAsync Get State - PullRequest
       0

Привязка WPF isAsync Get State

6 голосов
/ 25 октября 2010

Я использую свойство Binding IsAsync, чтобы пользовательский интерфейс реагировал и загружал данные из метода доступа get свойства, и это оказалось хорошим вариантом при использовании MVVM.Этот подход великолепен и не требует никакого ручного кода для асинхронных операций.Есть несколько случаев, когда загрузка данных занимает несколько секунд, и в течение этого времени очень трудно отличить «нет данных» от «загрузки данных».Есть ли свойство, по которому я могу определить состояние привязки «IsBusy» или «Загрузка», чтобы я мог показать какое-либо сообщение о том, что операция загрузки не завершена?

Ответы [ 2 ]

17 голосов
/ 19 марта 2011

Я знаю, это старая нить.Но если кому-то все еще интересно ...

Вы можете использовать PriorityBinding, в этой статье есть великолепно объясненный пример: http://www.switchonthecode.com/tutorials/wpf-tutorial-priority-bindings

Идея состоит в том, чтобы установить PriorityBinding, который, в свою очередь, определяетнесколько регулярных привязок, таких как:

  <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
    <TextBlock.Text>
      <PriorityBinding>
        <Binding ElementName="MainWindow" Path="Slow" IsAsync="True" />
        <Binding ElementName="MainWindow" Path="Fast" />
      </PriorityBinding>
    </TextBlock.Text>
  </TextBlock>

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

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

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

6 голосов
/ 06 декабря 2010

Согласно документам ,

При ожидании получения значения привязка сообщает значение FallbackValue, если оно доступно, или значение по умолчанию для цели привязкисвойство.

Это значение можно использовать для отображения сообщения пользователю во время загрузки привязки.

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