2010-11-26 15 views
5

.netとMVVMのデザインモデルが初めてです。私のビューのコードビハインドファイルでは、対応するModelをオブジェクトとして取得する必要があるため、今は止まっています。ここでの関係はどうですか?それは可能なのでしょうか?それを「正しい方法で」するのですか?ビューからのMVVMアクセスモデル

答えて

5

ビューは、モデルをラップしてビューから隠すViewModelにアクセスする必要があります。ビューからモデルのプロパティにアクセスする必要がある場合は、ビューがバインドできるプロパティとしてモデルを公開するようにViewModelを取得します。

+0

さて、私はその答えがそのようなものだと思った。しかし、私はまだいくつかの問題があります。 タイプ1のビュー1をクリックすると、対応するモデルをビューモデルに保存します。 A型のビュー2をクリックすると、対応するモデルを同じviewmodelに保存することもできます。これまでのところ、私はモデルではなく(ビュー)自身を保存する方法しか知りません:/ – Andreas

1

ViewModelは、ビューの知識が全くないはずです。 ViewはDataBindingのみを使用する必要があります。そのため、モデルまたはViewModelについての知識はありません。

ビューと対話する必要がある場合は、すべてがデータバインディングである必要があります。例外的な場合のみ、コードビハインドに頼るべきです。

ViewModelおよびにはをバインドするためにプロパティがあります。

+0

彼はビューからモデルにアクセスしたいのですが、それ以外の方法ではありません。 –

0
public partial class MyView : Window 
{ 
    private MyViewModel aModel; 

    public MyView() 
    { 
     InitializeComponent(); 
     aModel = new MyViewModel(); 
     this.DataContext = aModel(); 
} 

今、ビューはビューモデルのパブリックプロパティにバインドされたそのコントロールのデータバインディングを変更します。

1

MVVMでは、ビューからモデルに直接アクセスすることはできません。これは、MVVMコミュニティの一般的な誤解です。

ViewModelは、ビューがモデルに直接アクセスできるように、基になるモデルを公開することができます。

バインディング:背後に

{Binding Model.Title} 

コード:

((MyViewModel)DataContext).Title 

WPF Application Framework (WAF)ViewModelに(EmailClient)サンプルアプリケーションは、ビューからモデルにアクセスする方法を示しています。

関連する問題