MVVM в Silverlight - Куда идет логика асинхронного сервиса? - PullRequest
3 голосов
/ 12 августа 2009

У меня есть начало моего первого приложения Silverlight MVVM, и мне нужно знать, куда мне поместить бизнес-логику, включая вызовы асинхронных служб. Это идет на странице, где размещен вид? Я просто устанавливаю свойство ViewModel, которое обновляет представление?

Ответы [ 4 ]

3 голосов
/ 14 августа 2009

Работать с MVVM в Silverlight сложнее, чем в WPF, но мы сделали это. Да, мы помещаем асинхронный вызов службы в ViewModel. «Модель» в нашем случае - это прокси-объекты, которые отправляются туда и обратно через вызов веб-службы. К сожалению, это означает, что некоторые из ваших функций находятся в вашем клиентском ViewModel, а некоторые - на стороне сервера. Там действительно нет способа обойти это.

... и да, пусть обработчик событий Async Complete записывает в свойство в ViewModel и убедитесь, что свойство (или коллекция) реализует INotifyPropertyChanged (или INotifyCollectionChanged). Если вы возвращаете объекты «модели» из веб-службы, и эти объекты сами не реализуют INotifyPropertyChanged, то вам следует рассмотреть объект-оболочку ViewModel вокруг них. Таким образом, если у вас есть View для каждого из этих объектов, они могут выполнять двустороннюю привязку.

2 голосов
/ 05 мая 2010

У вас есть хороший пример от Microsoft здесь . Это очень помогает мне понять вызовы MVVM и ASYNC.

1 голос
/ 19 августа 2009

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

1 голос
/ 12 августа 2009

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

...