Mudar o principal no projeto WPF
-
21-09-2019 - |
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.
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();