janela de aplicação WPF aparece no topo de SplashScreen
-
06-07-2019 - |
Pergunta
Eu segui os passos descritos em Como adicionar uma tela inicial para um aplicativo WPF para adicionar uma tela inicial para a minha aplicação WPF. Quando eu iniciar o aplicativo, a imagem inicial é mostrado, então a janela principal aparece, e os fades imagem respingo de distância.
Meu problema é que quando a janela principal aparece, aparece no topo da imagem do respingo. Então, quando a imagem respingo começa a desaparecer, a imagem inicial aparece ao topo novamente. O resultado final é que a imagem respingo desaparece por uma fração de segundo como as principais aparece a janela.
Como posso forçar a janela principal a aparecer sob a imagem inicial, de modo que a imagem inicial não desaparece?
Solução
Este não é um comportamento padrão, você deve ter alguns isso é código foca manualmente a janela principal?
Pode ser mais fácil apenas para desligar o fade manualmente com um pouco de código como este:
_splash = new SplashScreen("LoadingScreen.png");
_splash.Show(false);
_splash.Close(TimeSpan.Zero);
Outras dicas
Em .NET 4.0 um sobrecarga foi adicionado à mostra método que permite definir o WS_EX_TOPMOST estilo da janela na janela de tela de abertura. Mostrar a tela inicial no código como este:
SplashScreen splash = new SplashScreen("SplashScreen.png");
splash.Show(autoClose: true, topMost: true);
Eu chamo isso a partir do método
protected override void OnStartup(StartupEventArgs e)
em App.xaml.cs.
"SplashScreen.png" é, naturalmente, o identificador para a sua imagem respingo embutido em recursos do aplicativo.
Não sei se isso vai ajudar, mas se você definir o proprietário da tela do respingo ao formulário atual, então isso deve talvez fazer o truque?
_splash.Owner = this;
Caso contrário, você pode olhar aqui:
Isto pode ajudar também.