2016-06-13 10 views
1

私はC#を学び始めました。私は現在いくつかのプリズムを学んでいます。 私はプロジェクトの構造とインターフェイス全体にいくつかの問題があります。あなたは私を助けてくれますか?プリズムMVVM構造

私は、すべてのViewModels を実装していることがBindableBaseインターフェイスを継承していることを知りました。しかし、モデルはどうですか?

IE:私は従業員モデルを持っています。それは私のセットと取得とOnPropertyChangedの実装で私のクラス属性を持っています。あれは正しいですか?

モデルはINotifyPropertyChangedとViewModel を実装しており、 BindableBaseを継承していますか?

+1

「BindableBase」は、インターフェイスの実装とは異なるものを継承する基本クラスであることを指摘することが重要です。私はMVVMLightに慣れているので、私はあなたの実際の質問に答えることができません申し訳ありません。 – Filburt

+1

あなたのモデルにはあなたのクラスとそれに関連するすべての機能が含まれます。 ViewModelにはすべてのロジックが含まれます。ビューには、すべてのイベントハンドラとGUIが含まれます。 –

+1

**すべてのViewModelは** BindableBase' **クラス**を拡張する必要があります(これはインターフェイスではありません)。 'BindableBase'は' INotifyPropertyChanged'を実装するうえできちんとした方法を持っていますし、それを使うかどうかはあなた次第です。それを使用しないと、何も起こりません。 'INotifyPropertyChanged'を実装するだけです。あなたがそれを使用することを決めた場合、あなたのモデルでそれを使用することに問題はありませんが、そうするときにプリズムアセンブリを含める必要があります。 'BindableBase'のソースコード:https://github.com/PrismLibrary/Prism/blob/master/Source/Prism/Mvvm/BindableBase.cs – kha

答えて

1

BindableBaseは、あなたのビューモデル/モデルのプリズムからの基本クラスです。この基本クラスは、INotifyPropertyChangedを実装するのに役立ち、イベントをトリガーすることを忘れないようにSetPropertyメソッドを提供します。 INotifyPropertyChangedを実装し、OnPropertyChangedメソッドを自分で呼び出すことはできますが、なぜ迷惑でしょうか。

INotifyPropertyChangedを実装する必要があるかどうかについては、(単独で、またはBindableBaseから継承して)議論できます。

フロントエンドまたはバックエンドとUI(または変更を監視する他のシステム)によってデータが変更されるとすぐに、INotifyPropertyChanged(/ use BindableBase)を実装するのが最も簡単です。あなたのモデルの特定の型が常に読み込み専用であれば、インターフェイスから離れることができますが、私の意見では、ほとんどの場合、それは問題のない値になります(読み込み専用ではなく、バグを更新していればどうでしょうか?

具体的には、Prism documentationのMVVMパターンとINotifyPropertyChangedについて詳しく読むことができます。

関連する問題