Come centrare un'applicazione WPF sullo schermo?
-
06-09-2019 - |
Domanda
voglio centrare il mio WPF applicazione all'avvio sullo schermo primario. So che devo impostare myWindow.Left e myWindow.Top, ma dove posso ottenere i valori?
Ho trovato System.Windows.Forms.Screen.PrimaryScreen
, che non è apparentemente WPF. Esiste un WPF alternativa che mi dà la risoluzione dello schermo o qualcosa del genere?
Soluzione
Mettere questo nel costruttore della finestra
WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
NET FrameworkSupported in: 4, 3.5, 3.0
.NET Framework client ProfileSupported in: 4, 3.5 SP1
Altri suggerimenti
XAML
WindowStartupLocation="CenterScreen"
È comunque possibile utilizzare la classe Screen da un'applicazione WPF. Hai solo bisogno di fare riferimento alle System.Windows.Forms assemblaggio dall'applicazione. Una volta fatto questo, (e System.Drawing fatto riferimento per l'esempio qui sotto):
Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
... funziona bene.
Avete preso in considerazione l'impostazione della proprietà WindowStartupLocation finestra principale per CenterScreen?
Che dire della classe SystemParameters in PresentationFramework? Ha un WorkArea proprietà che sembra essere quello che stai cercando.
Ma, perché non sarà l'impostazione del lavoro Window.WindowStartupLocation? CenterScreen è uno dei valori enum. Dovete modificare il centraggio?
Non è necessario fare riferimento al montaggio System.Windows.Forms
dall'applicazione. Invece, è possibile utilizzare System.Windows.SystemParameters.WorkArea
. Ciò equivale al System.Windows.Forms.Screen.PrimaryScreen.WorkingArea
!
Non c'è WPF equivalente. System.Windows.Forms.Screen
è ancora parte del framework .NET e può essere utilizzato da WPF però.
questa domanda per più dettagli, ma è possibile utilizzare le chiamate relative a schermi utilizzando il class WindowInteropHelper
per avvolgere il vostro controllo WPF.
var window = new MyWindow();
per il centro di utilizzo dello schermo:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
per il centro dell'impiego finestra padre:
window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;