2009-05-17 9 views
1

への結合は、私は最近、本当に周りの事、次の私の心をラップWPFとI'cantを使用してアプリケーションをdevelping始めましたハードディスクへの/からの書き込み。 WPFアプリケーションがあり、モデルのさまざまな部分にバインドしたいと思います。私は基になるモデル(例えば、INotifyPropertyChangedを実装する)への変更をUIに通知する必要がありますが、私のモデルに干渉することなく(モデルの現在の実装を変更せずに)読みたいと思います。モデルの変更以外の変更通知を実装するにはどうすればよいですか? 私はこれをやりたい理由は、複数のプロジェクト間でモデルを共有し、1つだけがWPFであり、モデルに非一貫性のあるコードを追加したくないということです。 私の頭に浮かんだことの1つは、(INotifyPropertyChangesやBindingListsなどを使って)モデルの "コピー"を作成することでしたが、それは維持するのが難しいようです... ありがとうございます。WPFデータの外部データモデル

オンドレイ

+0

、変更を作製することを含むリフレクションを使用して、キャッシュ、およびだけでデータバインディングのためのオリジナルのオブジェクトのようなアダプタの外観を作るためにTypeDescriptorを使用した:そして、あなたは、このようなモデルの周りのViewModelを作成します...原作者のサイトがクラッシュし、彼がその記事をバックアップしていないことを除いて:(。私は彼にそれを載せることができるかどうかを調べようとしている。そうでなければ、同様の記事を書く必要があるかもしれない。 –

+0

私はそのコードを見ることに非常に関心があります。記事をバックアップしてもらえましたか?ありがとう –

答えて

0

は、私はここで2つの解決策を参照してください。

  1. はWPF画面(MVVM pattern)のための別のモデルを使用してください。これは、2つの異なるモデルを維持する必要があります。また、多くのマッピングコードを準備する必要があります。
  2. ポストシャープを使用して、モデルを必要な定型文ですべて "強化"します。 Hereには、自動INotifyPropertyChanged実装の例があります。 PostSharpをプロジェクトに導入することは重要な決定であることを忘れないでください。最初に慣れておくことをお勧めします。
2

MVVMこれをチェックしてください

そのソースコードをダウンロードして階層を参照してください。

基本的には、単純なPOCOオブジェクトをモデルとして保持します。私はこのための完璧なソリューションを持って

public class CustomerViewModel : INotifyPropertyChanged 
{ 
     readonly Customer _customer; 
     public CustomerViewModel(Customer customer) 
     { 
      _customer = customer; 
     } 

     public string FirstName 
     { 
      get { return _customer.FirstName; } 
      set 
      { 
       if (value == _customer.FirstName) 
        return; 

       _customer.FirstName = value; 

       OnPropertyChanged("FirstName"); 
      } 
     } 
     ... 
} 
関連する問題