Como centro um aplicativo WPF na tela?
-
06-09-2019 - |
Pergunta
Eu quero centrar meu aplicativo WPF na inicialização na tela principal. Eu sei que eu tenho que definir myWindow.Left e myWindow.Top, mas onde posso obter os valores?
Eu encontrei System.Windows.Forms.Screen.PrimaryScreen
, o que não é, aparentemente, WPF. Existe uma alternativa WPF que me dá a resolução de tela ou algo assim?
Solução
Coloque isso no seu construtor da janela
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
.NET FrameworkSupported em: 4, 3.5, 3.0
.NET Framework Cliente ProfileSupported em: 4, 3.5 SP1
Outras dicas
xaml
WindowStartupLocation="CenterScreen"
Você ainda pode usar a classe Screen a partir de um aplicativo WPF. Você só precisa referenciar os System.Windows.Forms montagem do seu aplicativo. Uma vez feito isso, (e referenciado System.Drawing para o exemplo abaixo):
Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
... funciona muito bem.
Você já considerou definir a sua principal propriedade da janela WindowStartupLocation para CenterScreen?
O que sobre a classe SystemParameters em PresentationFramework? Ele tem uma propriedade WorkArea que parece ser o que você está procurando.
Mas, por que não vai definir o trabalho Window.WindowStartupLocation? CenterScreen é um dos valores enum. Você tem que ajustar a centralização?
Você não precisa fazer referência ao System.Windows.Forms
montagem do seu aplicativo. Em vez disso, você pode usar System.Windows.SystemParameters.WorkArea
. Isto é equivalente à System.Windows.Forms.Screen.PrimaryScreen.WorkingArea
!
Não há WPF equivalente. System.Windows.Forms.Screen
ainda é parte do framework .NET e pode ser usado a partir de WPF embora.
Consulte este questão por mais detalhes, mas você pode usar as chamadas relacionadas com telas usando a WindowInteropHelper
classe para embrulhar o seu controle WPF.
var window = new MyWindow();
para o centro do uso da tela:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
para o centro do uso janela pai:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;