ฉันเข้าใจความต้องการ สิ่งนี้คือมีวิธี WPF ในการรับค่าเหล่านั้น แต่ใช่หนึ่งในผู้ร่วมให้ข้อมูลถูกต้องไม่ใช่โดยตรง วิธีแก้ปัญหาไม่ใช่การแก้ปัญหาเหล่านั้นทั้งหมด แต่เป็นการเปลี่ยนแนวทางเริ่มต้นตามการออกแบบและพัฒนาที่สะอาด
A) ตั้งค่าหน้าต่างหลักเริ่มต้นเป็นหน้าจอ
B) รับค่าสำหรับ ActualWindow รวมถึงวิธี WPF ที่มีประโยชน์มากมาย
C) คุณสามารถเพิ่ม Windows ได้มากเท่าที่คุณต้องการสำหรับพฤติกรรมที่คุณต้องการเช่นปรับขนาดได้ย่อเล็กสุด ... แต่ตอนนี้คุณสามารถเข้าถึงหน้าจอที่โหลดและแสดงผลได้ตลอดเวลา
โปรดใช้ความระมัดระวังกับตัวอย่างต่อไปนี้มี Code บางอย่างที่ทำให้จำเป็นต้องใช้วิธีการแบบนั้นอย่างไรก็ตามควรใช้งานได้ (จะให้คะแนนสำหรับแต่ละมุมของหน้าจอของคุณ): ตัวอย่างการทำงานใน Single, จอภาพคู่และความละเอียดที่แตกต่างกัน (ภายในคลาสหน้าต่างหลักเบื้องต้น):
InitializeComponent();
[…]
ActualWindow.AddHandler(Window.LoadedEvent, new RoutedEventHandler(StartUpScreenLoaded));
เหตุการณ์ที่กำหนดเส้นทาง:
private void StartUpScreenLoaded(object sender, RoutedEventArgs e)
{
Window StartUpScreen = sender as Window;
Dispatcher.Invoke(new Action(() =>
{
StartUpScreen.InvalidateVisual();
System.Windows.Point CoordinatesTopRight = StartUpScreen.TranslatePoint(new System.Windows.Point((StartUpScreen.ActualWidth), (0d)), ActualWindow);
System.Windows.Point CoordinatesBottomRight = StartUpScreen.TranslatePoint(new System.Windows.Point((StartUpScreen.ActualWidth), (StartUpScreen.ActualHeight)), ActualWindow);
System.Windows.Point CoordinatesBottomLeft = StartUpScreen.TranslatePoint(new System.Windows.Point((0d), (StartUpScreen.ActualHeight)), ActualWindow);
System.Windows.Application.Current.Resources["StartUpScreenPointTopRight"] = CoordinatesTopRight;
System.Windows.Application.Current.Resources["StartUpScreenPointBottomRight"] = CoordinatesBottomRight;
System.Windows.Application.Current.Resources["StartUpScreenPointBottomLeft"] = CoordinatesBottomLeft;
}), DispatcherPriority.Loaded);
}