如何从MainPage.xaml.cs调用LoadData()

时间:2014-03-23 05:31:28

标签: c# wpf xaml windows-phone-8

情况:

  • 我有一个主页面xaml,其数据上下文设置为MainVieweModelSampleData.xaml
  • 我有一个MainViewModel类,其中包含ItemViewModel类的名为“Problems”的集合
  • 我在MainviewModel类中有一个LoadData函数,其中ItemViewModel类被实例化,实例被添加到Problems集合

问题:

如何从MainPage.xaml.cs中调用它,目前我使用以下代码从app.xaml.cs调用它:

    private static MainViewModel viewModel;

    public static MainViewModel ViewModel
    {

        get
        {
            if (viewModel==null)
            {
                viewModel = new MainViewModel();
                viewModel.LoadData();
            }
            return viewModel;
        }

    }

1 个答案:

答案 0 :(得分:2)

在App.Xaml.cs中,您应该如下定义ViewModel,

private static MainViewModel _viewModel;

public static MainViewModel ViewModel
{
    get { return _viewModel ?? (_viewModel = new MainViewModel()); }
}

然后在您的MainPage中调用viewModel,

public MainPage()
{
    InitializeComponent();

    //Here you set the ViewModel
    this.DataContext = App.ViewModel;
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    //Here you load the data   
    App.ViewModel.LoadData();
}