Форма данных Silverlights с сервисами MVVM и WCF Ria - PullRequest
1 голос
/ 15 марта 2011

Добрый вечер,

Я ищу кого-то, кто поможет мне понять, как интегрировать Silverlight DataForm с моей ViewModel, которая использует службы WCF Ria.То, что я пытаюсь сделать, - это использовать DataForm для управления моей коллекцией сущностей и использовать встроенные функции навигации, добавления, редактирования и удаления.Однако у меня возникли проблемы с привязкой всего этого к моим службам ViewModel и Ria.

Насколько я понимаю, DataForm необходимо привязать к ObservableCollection<T>.Однако, когда я запрашиваю из контекста службы WCF Ria.то есть.

_context.Load(_context.GetAllCustomersQuery(), loadCustomersQueryCallback, true);

Я получу обратно IQueryable в методе обратного вызова, который я должен был бы разыграть как ObservableCollection<T>, как это?

Customers = new ObservableCollection<Customer>(_context.Customers);

Customers - это свойство в моей ViewModel, например, так ...

    public ObservableCollection<Customer> Customers
    {
        get { return _customers; }
        set
        {
            if (_customers != value)
            {
                _customers = value;
                OnPropertyChanged("Customers");
            }
        }
    }

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

Это то, что я делаю сПраво собственности клиентов?я "отключился" от контекста, приведя к новой ObservableCollection и, следовательно, фактически не добавил или не удалил сущности из контекста?

Любая помощь очень ценится.

С уважением,

Ответы [ 2 ]

3 голосов
/ 15 марта 2011

Я думаю, что вы затронули проблему в своем последнем вопросе.Когда вы создаете новую коллекцию ObservableCollection, вы отключаетесь от отслеживания изменений коллекции (добавляет и удаляет).Вместо использования OC, есть ряд других вариантов, которые стоит рассмотреть.В вашем случае, похоже, EntitySet или EntityList могут быть лучшими вариантами.Чтобы ознакомиться с полным описанием этих типов, ознакомьтесь с моим сообщением о привязке коллекции в RIA Services SP1 .

0 голосов
/ 15 марта 2011

Вы можете использовать:

Customers.Clear(); // Or dispose every customer if it is Disposable
Customers = new ObservableCollection(result.ToList());
...