2010-05-04 5 views
0

У меня есть класс CustomerService, который просто читает коллекцию клиентов из файла или создает его и передает его в Main Model View, где он превращается в ObservableCollection. Какая наилучшая практика для обеспечения того, чтобы элементы в CustomerService и ObservableCollection синхронизировались. Я предполагаю, что я могу подключить объект CustomerService для ответа на RaisePropertyChanged, но разве это не для использования с элементами управления WPF? Есть ли способ лучше?Как мне обновить DataService с помощью ObservableCollection?

using System; 

public class MainModelView 
{ 
    public MainModelView() 
    { 
     _customers = new ObservableCollection<CustomerViewModel>(new CustomerService().GetCustomers()); 
    } 

    public const string CustomersPropertyName = "Customers" 
    private ObservableCollection<CustomerViewModel> _customers; 
    public ObservableCollection<CustomerViewModel> Customers 
    { 
     get 
     { 
      return _customers; 
     } 

     set 
     { 
      if (_customers == value) 
      { 
       return; 
      } 

      var oldValue = _customers; 
      _customers = value; 

      // Update bindings and broadcast change using GalaSoft.MvvmLight.Messenging 
      RaisePropertyChanged(CustomersPropertyName, oldValue, value, true); 
     } 
    } 
} 

public class CustomerService 
{ 
     /// <summary> 
     /// Load all persons from file on disk. 
     /// </summary> 

     _customers = new List<CustomerViewModel> 
         { 
          new CustomerViewModel(new Customer("Bob", "")), 
          new CustomerViewModel(new Customer("Bob 2", "")),       
          new CustomerViewModel(new Customer("Bob 3", "")),      
         }; 

     public IEnumerable<LinkViewModel> GetCustomers() 
     { 
      return _customers; 
     } 
} 

ответ

2

Обращаться с событием CollectionChanged в разделе «Клиенты». Когда он изменится, вызовите свою службу, чтобы синхронизировать ее.

При привязке ваших «Клиентов» убедитесь, что вы указали «Режим = TwoWay» в вашем xaml.

Смежные вопросы