Saya mengerti tuntutannya. Masalahnya, ada Metode WPF untuk mendapatkan nilai-nilai itu - tapi ya, salah satu kontributornya benar, tidak secara langsung. Solusinya bukanlah untuk mendapatkan semua penyelesaian tersebut, tetapi untuk mengubah pendekatan awal sesuai dengan Desain dan Pengembangan yang bersih.
A) Atur Jendela Utama awal ke Layar
B) Dapatkan Nilai untuk ActualWindow termasuk banyak Metode WPF yang berguna
C) Anda dapat menambahkan Windows sebanyak yang Anda suka untuk perilaku yang Anda inginkan, seperti mengubah ukuran, meminimalkan apa pun… tetapi sekarang Anda selalu dapat mengakses Layar yang Dimuat dan Dirender
Harap berhati-hati dengan contoh berikut, ada beberapa Kode di sekitar yang mengharuskan untuk menggunakan pendekatan semacam itu, namun itu harus berhasil (Ini akan memberi Anda Poin untuk setiap Sudut Layar Anda): Contoh Bekerja di Single, Monitor Ganda dan Resolusi berbeda (Dalam Kelas Jendela Utama Primal):
InitializeComponent();
[…]
ActualWindow.AddHandler(Window.LoadedEvent, new RoutedEventHandler(StartUpScreenLoaded));
Acara yang Dirutekan:
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);
}