Chcę wyśrodkować moją aplikację WPF podczas uruchamiania na ekranie głównym. Wiem, że muszę ustawić myWindow.Left i myWindow.Top, ale skąd mam wziąć te wartości?
Znalazłem System.Windows.Forms.Screen.PrimaryScreen
, co najwyraźniej nie jest WPF. Czy istnieje alternatywa WPF, która daje mi rozdzielczość ekranu lub coś takiego?
c#
wpf
screen-positioning
Marcel B.
źródło
źródło
WindowStartupLocation.CenterOwner
niektóre okna podrzędneManual
. Ref: msdn.microsoft.com/en-us/library/…xaml
źródło
Nadal możesz używać klasy Screen z aplikacji WPF. Wystarczy odwołać się do zestawu System.Windows.Forms z poziomu aplikacji. Gdy już to zrobisz (i odwołaj się do System.Drawing dla przykładu poniżej):
... działa dobrze.
Czy rozważałeś ustawienie właściwości okna głównego WindowStartupLocation na CenterScreen?
źródło
A co z klasą SystemParameters w PresentationFramework? Ma właściwość WorkArea, która wydaje się być tym, czego szukasz.
Ale dlaczego ustawienie Window.WindowStartupLocation nie działa? CenterScreen jest jedną z wartości wyliczenia. Czy musisz poprawić wyśrodkowanie?
źródło
Nie musisz odwoływać się do
System.Windows.Forms
zestawu z aplikacji. Zamiast tego możesz użyćSystem.Windows.SystemParameters.WorkArea
. Jest to odpowiednikSystem.Windows.Forms.Screen.PrimaryScreen.WorkingArea
!źródło
Nie ma odpowiednika WPF.
System.Windows.Forms.Screen
jest nadal częścią platformy .NET i może być używany z WPF.Zobacz to pytanie, aby uzyskać więcej informacji, ale możesz użyć wywołań związanych z ekranami, używając
WindowInteropHelper
klasy do zawijania formantu WPF.źródło
na środku ekranu użyj:
dla środka okna nadrzędnego użyj:
źródło
Wolę umieścić to w kodzie WPF.
W
[WindowName].xaml
pliku:źródło