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