事件发生后,该对象为null

时间:2016-08-15 15:16:31

标签: c# wpf mvvm

我在我的应用程序中使用MVVM模式。基本上我有一个主视图和几个子视图。

在主ViewModel中,我有每个子ViewModel的实例。现在处于主ViewModel的一个事件中。

我有

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");
            }
        }
    }

它可以运行,之后程序返回到子视图C.我想使用我刚刚在代码后面的按钮事件中使用的SelectedItem。

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

SelectedItem为空。不确定为什么?

1 个答案:

答案 0 :(得分:0)

糟糕

添加View加载事件后,我得到了值。

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;