Возврат данных из асинхронной команды в приложении WPF MVVM - PullRequest
1 голос
/ 12 декабря 2011

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

В моем представлении у меня есть кнопка и двасписки.

Я хочу щелкнуть по кнопке и заполнить два списка списками двух отдельных списков строк в асинхронном режиме.

В моем ViewModel у меня есть два свойства ObservableCollectionи это то, с чем связаны свойства ListBox.ItemsSource.Все хорошо.

Теперь у меня есть экземпляр AsyncDelegateCommand (обрисован в общих чертах в этом посте - http://www.amazedsaint.com/2010/10/asynchronous-delegate-command-for-your.html#), данные которого привязаны к свойству Command кнопки.

ВМетод DoSomething (), я только что сделал быстрый пример, который создает список случайных строк с несколькими интервалами сна, чтобы имитировать некоторое прошедшее время.

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

Надеюсь, это имеет смысл!

Kris

1 Ответ

1 голос
/ 12 декабря 2011

Используя AsyncDelegateCommand, на который вы ссылаетесь, вы подписываетесь на событие Completed Команды и добавляете результаты своей коллекции из аргументов события Result в свою коллекцию ObservableCollection.

Это автоматически произойдет в правильном контексте синхронизации (так как эта команда использует BackgroundWorker для работы), что позволит соответствующему обновлению вашего пользовательского интерфейса.

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