2010-10-21 19 views
0

J'ai une fenêtre transparente de style personnalisé et j'ai vu beaucoup de problèmes de gestion de min/max/redimensionner le comportement lorsque vous utilisez la transparence et "WindowStyle = None".C# - moyen facile d'obtenir des limites de fenêtre x/y maximales?

Lorsque je dis à ma fenêtre de changer son état de fenêtre à maximisé, il ne l'obtient pas correctement, donc je veux remplacer la logique là-bas. Il obtient la largeur correcte, mais la hauteur est tout foiré et il ne sait pas ajouter de remplissage pour tenir compte d'un effet de lueur extérieure.

Sans l'utilisation des fonctions win32, existe-t-il un moyen FACILE de déterminer la "max viewport" ou les "limites maximales" de l'affichage sur lequel l'application est exécutée? Je pense que la réponse courte à cette question est probablement non mais j'ai pensé que je demanderais de toute façon. J'ai ma largeur et hauteur min/max configurées pour l'application et j'ai pensé qu'il y avait une fonction que je pourrais appeler pour me ramener ax/y max lié alors je pourrais simplement régler la hauteur et la largeur de la fenêtre à ces valeurs après avoir soustrait le rembourrage. Mon intention est d'avoir une résolution prise en charge de 1024x768 - 1920x1080 afin que cette application peut être affichée plusieurs endroits sans reconfiguration.

+0

Je vais essayer d'implémenter les techniques de chrome de fenêtre personnalisée de Lester Lobo, mais j'ai l'impression que cela devrait être plus simple que d'obtenir un comportement de maximisation "correct" de ma fenêtre personnalisée. Je déteste juste que je perde toute cette fonctionnalité de la fenêtre juste pour "reskin" mon mainwindow. Il se sent très "un-wpf" puisque tout est censé être restylé au nième degré. – TWood

+0

J'ai fini par utiliser les techniques de chrome personnalisées et restyler ma fenêtre principale. Un peu plus de travail que prévu mais à la fin j'ai appris quelque chose alors je suppose que ce n'était pas une perte d'effort. – TWood

Répondre

1

Jetez un oeil à la Screen.PrimaryScreen Property. Il a une méthode appelée GetWorkingArea qui je pense est ce que vous voulez.

S'il y a plus d'un affichage, il existe des méthodes pour énumérer les affichages et trouver sur quel écran se trouve l'application.

+0

ah, cela se trouve dans l'espace de noms system.windows.forms. On m'a dit que porter une référence à cette librairie dans mon projet wpf est un non non à cause des inconvénients de performance. Avez-vous eu une expérience de première main avec l'utilisation de cela? – TWood

+0

@TWood - Je ne l'ai pas beaucoup utilisé ou dans une zone critique, mais cela fonctionne bien. – ChrisF