0

ファイルから顧客のコレクションを読み取るか、顧客のコレクションを作成し、それをメイン モデル ビューに戻して ObservableCollection に変換する、CustomerService というクラスがあります。CustomerService と ObservableCollection の項目が同期していることを確認するためのベスト プラクティスは何ですか。RaisePropertyChanged に応答するように CustomerService オブジェクトを接続できると思いますが、これは WPF コントロールでのみ使用するためのものではありませんか? より良い方法はありますか?

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;
        }
}
4

1 に答える 1

2

「Customers」の CollectionChanged イベントを処理します。変更されたら、サービスを呼び出して同期を維持します。

「Customers」をバインドするときは、xaml で「Mode=TwoWay」を指定してください。

于 2010-05-05T02:36:11.367 に答える