Pergunta

Sempre me irritou como C# quer fazer a startup para você. Então agora estou tentando fazer meu próprio método principal. Não está funcionando:

Eu forneci este método principal:

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

Este método é executado, mas não consigo ver nada visual. Acho que sinto falta de algo do seguinte código principal normal:

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

Eu tentei substituir o OnStartup com o mesmo código, mas isso lança uma exceção. Se você tem outras soluções, estou disposto a ouvir. Só não consigo ver por que minha MainWindow deve ser criada primeiro.

Foi útil?

Solução

Você está certo: você precisa instanciar um aplicativo e a chamada de chamada nele. (Você faria isso no Main.) Para fazer com que ele mostre sua janela quando ele é executado, há três opções:

  • Use a sobrecarga de execução (janela), por exemplo MainWindow w = ...; new MyApp().Run(w);
  • Defina o startupuri, por exemplo myApp.StartupUri = new Uri(...); myApp.Run();
  • Faça o show no evento de inicialização ou substituição no início, por exemplo, myApp.Startup += (...) => new MainWindow().Show();

Exemplos de código de inicialização manual são mostrados no MSDN sob o Application.run () e Application.run (janela) Entradas - elas devem começar! A sobrecarga de run () também discute Por quê Application.Run é necessário e o que ele inicia o loop do despachante.

Outras dicas

Sempre me irritou como C# quer fazer a startup para você. Então agora estou tentando fazer meu próprio método principal. Não está funcionando:

C# não faz a inicialização para você. Ele insere código que faz isso por você. Você sempre pode alterar o código e o que quer que quisesse. A primeira coisa que eu faria se fosse você - clique com o botão direito do mouse no arquivo do projeto e selecione Propriedades. Em Application (a guia superior) - consulte o objeto de inicialização.

Você pode selecionar o formulário

Além disso - você está perdendo uma linha se quiser que a janela apareça:

window.Show();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top