在WPF项目中更改Main

Mad*_*sen 1 .net c# wpf model-view-controller program-entry-point

总是烦恼我C#想要为你做这个创业公司.所以现在我正在尝试制作自己的主要方法.它不起作用:

我提供了这个主要方法:

[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main()
{
    Model model= new Model();
    Controller controller = new Controller(model);
    MainWindow window = new MainWindow(controller, model);
}
Run Code Online (Sandbox Code Playgroud)

这个方法运行,但我看不到任何视觉效果.我想我错过了以下正常主要代码:

Application.App app = new Application.App();
app.InitializeComponent();
app.Run();
Run Code Online (Sandbox Code Playgroud)

我尝试使用相同的代码覆盖OnStartUp,但是会引发异常.如果您有其他解决方案,我愿意听.我只是不明白为什么我的MainWindow必须先创建.

ito*_*son 5

你是对的:你需要实例化一个应用程序并在其上调用Run.(你在Main中这样做.)为了让它在运行时显示你的窗口,有三个选项:

  • 使用Run(Window)重载,例如 MainWindow w = ...; new MyApp().Run(w);
  • 设置StartupUri例如 myApp.StartupUri = new Uri(...); myApp.Run();
  • 在Startup事件中显示或OnStartup覆盖例如 myApp.Startup += (...) => new MainWindow().Show();

MSDN中的Application.Run()Application.Run(Window)条目中显示了手动启动代码的示例- 这些应该可以帮助您入门!Run()重载还讨论了为什么需要Application.Run以及它做什么,例如启动调度程序循环.