J'ai écrit une propriété attachée que je peux définir sur une fenêtre pour étendre le cadre de verre dans la zone client (en utilisant l'API DwmExtendFrameIntoClientArea
). Cela fonctionne bien dans la plupart des cas. Maintenant, je veux que ma fenêtre soit sans marge, donc je définir les attributs suivants sur ma fenêtre:Activer l'effet de verre Vista sur une fenêtre WPF sans bordure
WindowStyle="None"
ResizeMode="NoResize"
Background="Transparent"
u:WinUtil.EnableGlass="True"
ShowInTaskbar="False"
Mais avec ces attributs, le verre ne montre pas du tout: ma fenêtre a juste un fond transparent. Si je règle ResizeMode
à CanResize
, le verre est montré, mais je ne veux pas que la fenêtre soit redimensionnable. Je suppose que c'est dû au fait que l'effet de verre est obtenu en étendant la trame non-client dans la zone client: avec WindowStyle = None
et ResizeMode = NoResize
, il n'y a pas de trame non-client, donc il n'y a rien à étendre. Lorsque j'active le redimensionnement, il crée un cadre autour de la fenêtre afin que le cadre puisse être étendu.
je suppose qu'il devrait être possible de créer une fenêtre qui a une bordure mince, pas de barre de titre, et ne peut être redimensionnée, en réglant le WS_ approprié * bits, mais je ne sais pas quels sont ceux exactement
Mes questions sont les suivantes:
- Quels sont les bits de style doit être activé ou désactivé pour avoir l'apparence souhaitée et le comportement?
- Comment puis-je initialiser les bits de style de la fenêtre? La classe Window ne semble pas avoir quelque chose comme la propriété Windows Forms
CreateParams
... Est-il correct de définir ces bits après que le handle a été créé? - J'ai trouvé la classe
HwndSource
qui pourrait être une réponse à la question 2, mais il semble un peu complexe à utiliser si vous n'êtes pas un expert Win32 ... Serait-ce une solution raisonnable à mon problème?
Tout conseil est le bienvenu
Cela semble prometteur, merci. Maintenant, je dois comprendre comment l'utiliser, mais il ne semble pas trop mal;) –
Pas de chance jusqu'à présent, ma fenêtre reste désespérément noir ... –
OK, je l'ai eu ... Je devais définir le 'CompositionTarget .BackgroundColor' à 'Transparent', et' AllowsTransparency' à true. Merci ! –