Что такое хороший шаблон для привязки коллекции объектов, поступающих из WCF, в Silverlight? - PullRequest
3 голосов
/ 23 апреля 2010

У меня есть вопрос о шаблоне привязки данных Silverlight WCF:

Существует множество примеров того, как связывать данные с помощью выражений {Binding} в XAML, как выполнять асинхронные вызовы для службы WCF, установитьсвойство DataContext элемента в пользовательском интерфейсе, как использовать ObservableCollections и INotifyPropertyChanged, INotifyCollectionChanged и т. д.

Фон: я использую шаблон MVVM и имею Silverlight ItemsControl, для которого ItemsSource установлено значениеСвойство ObservableCollection для моего объекта ViewModel.На мой взгляд, это XAML, который имеет {Binding}.Скажем, объект модели называется «Метрика».Моя ViewModel периодически делает вызовы службы WCF, которая возвращает ObservableCollection.MetricInfo - это объект передачи данных (DTO).

Мой вопрос состоит из двух частей:

  1. Есть ли способ избежать копирования каждого свойства MetricInfo в класс модели - Metric?
  2. Когда вызовы WCF завершаются, есть ли способ убедиться, что я синхронизирую элементы, которые находятся как в моем локальном наборе ObservableCollection, так и в результате вызова WCF - без необходимости сначала очищать все элементы в локальномсбор, а затем добавить все из результата вызова WCF?

спасибо, Кришна

1 Ответ

1 голос
/ 23 апреля 2010

1) Я сделал отображение через конструктор следующим образом:

public Metric(MetricInfo metricInfoDTO)

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

2) Полагаю, у вас может быть какая-то логика сравнения для обновления и вставки в коллекцию. Для меня я сделал ясность и добавляю, что вы описываете в своем вопросе. Это просто, коротко, и у меня не было проблем с этим.

...