0

私は WPF と MVVM に非常に慣れていないため、多くの頭痛の種になっています。ナビゲーションの問題により、すべてのコンテンツを一度に表示することにしました。新しい ViewModel ( ) を作成して、他の 2 つの ViewModel (と)MainViewModelを含めることにしました。StudentViewModelAddStudentsViewModel

MainViewModel次のようなものが含まれています。

private StudentViewModel _studentVM;
private AddStudentsViewModel _addStudentsVM;

public StudentViewModel StudentVM
{
    get { return _studentVM; }
    set
    {
        if (_studentVM != value)
        {
            _studentVM = value;
            NotifyPropertyChanged("StudentVM");
        }
    }
}

(パブリックAddStudentsViewModel AddStudentsVMも存在します。これを短くしようとしています)

初期化フェーズ中にプログラムで値を設定でき、デバッグ時にボタンのクリックが正しいメソッドにリダイレクトされていることを確認できるため、メイン ビューに正常にバインドStudentVMされました。AddStudentsVMオブジェクトに生徒を正常に追加しているようにさえ見えますが、メイン ビューにはこれらの変更が反映されていません。

で何か不足していMainViewModelますか? または、ViewModel がその中の他の ViewModel の変更を確認することはできませんか?

4

2 に答える 2

0

ビューが のようなStudentViewModelプロパティへのネストされたナビゲーションを介して内部のプロパティにバインドされている場合、変更をビューに反映するには、 ( ではなく) 変更されたことをビューに通知する必要があります。StudentVMStudentVM.PropertyStudentVM.PropertyStudentVMStudentVM.Property

したがって、バインディングをどのように定義したか、およびPropertyChangedイベントを発生させているプロパティによって異なります。

于 2016-10-21T10:52:18.820 に答える
-1

他の 2 つのビューモデルを含むビューモデル。ちょっと考えてみてください。それは良い考えではありません。

とにかく、INotifyPropertyChanged含まれているビューモデルにも実装する必要があります。含まれている MainViewModel だけではありません。

多分それはせいですか?

于 2016-10-21T07:22:28.897 に答える