WPF / MVVM的Main方法有哪些内容?

时间:2010-08-06 13:56:43

标签: wpf mvvm

做我的第一个MVVM WPF应用程序。我希望在App.xaml中看到一个Main()方法(我习惯了Silverlight),但它不存在。我添加了自己的Main方法。在Silverlight中,我创建了一个链接到ViewModel的View,并将其设置为RootVisual。如何在WPF中正确打开我的第一个视图窗口?

2 个答案:

答案 0 :(得分:0)

有很多方法,但我认为设置Silverlight RootVisual的WPF相当于调用Application.Run

App.Run(new MainWindow())

一般来说,这里没有正确或错误的方式,也没有公认的惯例。有些人在Startup事件中进行此调用。其他人不使用该事件并改写OnStartup。还有一些人在App.xaml中使用StartupUri。

答案 1 :(得分:0)

当我创建我的第一个(也是迄今为止)WPF项目时,为了显示应用程序的主窗口(称为MainWindow),我覆盖了App类的OnStartup方法,如下所示:

/// <summary>
/// Raises the System.Windows.Application.Startup event.
/// </summary>
/// <param name="e">The <see cref="System.Windows.StartupEventArgs" /> that contains the event data.</param>
protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);

    // I did some app-specific stuff here...

    MainWindow view = new MainWindow();

    // Allow all controls in the window to bind to the ViewModel by setting the 
    // DataContext, which propagates down the element tree.
    MainWindowViewModel viewModel = new MainWindowViewModel();

    // and I did some more app-specific stuff here...

    view.DataContext = viewModel;
    view.Show();
}

我相信这是MVVM应用程序的推荐方式(虽然还有一段时间);此代码取自.NET 3.5应用程序。