Je comprends les demandes. Le fait est qu'il existe des méthodes WPF pour obtenir ces valeurs - mais oui, l'un des contributeurs a raison, pas directement. La solution n'est pas d'obtenir toutes ces solutions de contournement, mais de changer l'approche initiale selon une conception et un développement propres.
A) Réglez la fenêtre principale initiale sur Écran
B) Obtenez les valeurs pour ActualWindow, y compris une tonne de méthodes WPF utiles
C) Vous pouvez ajouter autant de fenêtres que vous le souhaitez pour le comportement que vous souhaitez avoir, comme redimensionnable, minimisé quoi que ce soit ... mais maintenant vous pouvez toujours accéder à l'écran chargé et rendu
Veuillez faire attention à l'exemple suivant, il y a du code autour qui rend nécessaire d'utiliser ce type d'approche, mais cela devrait fonctionner (cela vous donnerait les points pour chacun des coins de votre écran): Exemple de travail sur simple, Double moniteur et différentes résolutions (dans la classe principale de la fenêtre principale):
InitializeComponent();
[…]
ActualWindow.AddHandler(Window.LoadedEvent, new RoutedEventHandler(StartUpScreenLoaded));
Événement acheminé:
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);
}