WPF/MVVM的主要方法是什么?

WPF/MVVM的主要方法是什么?,wpf,mvvm,Wpf,Mvvm,正在执行我的第一个MVVM WPF应用程序。我希望在App.xaml(我习惯于Silverlight)中看到Main()方法,但它不存在。我添加了自己的主要方法。然后,我在Silverlight中创建了一个链接到ViewModel的视图,并将其设置为RootVisual。如何在WPF中正确打开第一个视图窗口?有很多方法,但我认为WPF设置Silverlight RootVisual的等效方法是调用Application.Run App.Run(new MainWindow()) 总的来说,这里

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

有很多方法,但我认为WPF设置Silverlight RootVisual的等效方法是调用Application.Run

App.Run(new MainWindow())
总的来说,这里没有对错之分,也没有公认的惯例。有些人在启动事件中打这个电话。其他人不使用该事件,而是覆盖OnStartup。还有一些人在App.xaml中使用StartupUri。

当我创建第一个(也是迄今为止唯一一个)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();
}
//
///引发System.Windows.Application.Startup事件。
/// 
///包含事件数据的。
启动时受保护的覆盖无效(StartupEventArgs e)
{
基础。启动时(e);
//我在这里做了一些特定于应用程序的东西。。。
主窗口视图=新的主窗口();
//通过设置
//DataContext,它沿着元素树向下传播。
MainWindowViewModel viewModel=新的MainWindowViewModel();
//我在这里做了一些特定于应用程序的东西。。。
view.DataContext=viewModel;
view.Show();
}
我相信这是MVVM应用程序的推荐方式(不过这是很久以前的事了);此代码取自.NET3.5应用程序