c# - 在 WPF 项目中更改 Main

标签 c# .net 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);
}

此方法已运行,但我看不到任何视觉效果。 我想我错过了以下正常主代码中的一些内容:

Application.App app = new Application.App();
app.InitializeComponent();
app.Run();

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

最佳答案

您是对的:您需要实例化一个应用程序并对其调用运行。 (您可以在 Main 中执行此操作。)要使其在运行时显示您的窗口,有以下三个选项:

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

手动启动代码的示例显示在 MSDN 中的 Application.Run() 下和 Application.Run(Window)条目 - 这些应该让你开始! Run() 重载还讨论了 为什么 需要 Application.Run 以及它的作用,例如启动调度程序循环。

关于c# - 在 WPF 项目中更改 Main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1948170/

相关文章:

c# - 项目中视频的存储位置

c# - MVVM命令错误

wpf - XAML 主题 Visual Studio 2012

.net - 如何阻止 Visual Studio 在发布版本中创建 XML 文档文件?

c# - 安全(加密)困境

c# - DateTime.Ticks 没有 100 ns 的分辨率?

c# - 如何在 C# 中使用 Selenium WebDriver 下载图像

c# - 大数组 C# OutOfMemoryException

c# - 重新抛出异常

c# - 有没有一种方法可以在 c# 中编程,这样当一个 exe 运行时,它服务并处理本地主机上的请求