2016-08-15 6 views
0

私のアプリケーションでMVVMパターンを使用しています。基本的に私はメインビューといくつかの子ビューを持っています。イベントの後にオブジェクトがヌルです

メインのViewModelには、各子のインスタンスがあります。ViewModels。今、メインのViewModelのイベントで。

私はそれはプログラムが私はちょうど背後にあるコードのボタンイベントに入ったのSelectedItemを使用したい子ビューC.に戻すことをした後、作品

private void Child_B_Grid_SelectedRowChanged(object sender, EventArgs e) 
{ 
    Child_C_ViewModel.SelectedItem = Child_B_ViewModel.SelectedItem; 
} 

public object SelectedItem 
    { 
     get 
     { 
      return this.selectedItem; 
     } 
     set 
     { 
      if (value != this.selectedItem) 
      { 
       this.selectedItem = value; 
       this.OnPropertyChanged("SelectedItem"); 
      } 
     } 
    } 

を持っています。

private void btn_Click(object sender, RoutedEventArgs e) 
    { 
     this.ViewModel.Save(); 
    } 

ただし、SelectedItemはnullです。理由は分かりませんか?

+0

あなたのコードをデバッグし、あなたのSelectedItemsのセッターにブレークポイントを設定したいと思うかもしれません。あなたのViewModelの複数のインスタンスを持っているように聞こえます – lokusking

+0

@ lokusking、エラーを見つけて私の解決策を投稿しました。しかし、私はまだなぜか分かりません.... – Bigeyes

答えて

0

Ops。

View loadイベントを追加した後、値が取得されます。

private void View_Loaded(object sender, System.Windows.RoutedEventArgs e) 
{ 
    if (this.DataContext is ViewModel) 
    { 
     this.ViewModel = this.DataContext as ViewModel; 
    } 
    else 
    { 
     this.DataContext = this.ViewModel; 
    } 
} 

元々、私はLoadイベントを持っていませんでした。なぜ私はそれが必要なのか正確にはわかりません。私はちょうどコンストラクタにコードを入れました:

 InitializeComponent(); 

     this.DataContext = this.ViewModel; 
関連する問題