Wpf message box et wpf folder selector

Soyez le premier à donner votre avis sur cette source.

Vue 8 275 fois - Téléchargée 920 fois

Description

Il n'existe pas en WPF un message box stylable, comme le peuvent être tous les composants WPF.
Cette source propose donc une manière de créer une message box stylable donc l'utilisation est quasi-aussi simple que celle d'un message box classique.

Elle prend juste en paramètre un uri ou un objet string contenant le style à charger pour la message box.

La message box est créée de la manière suivante :

Une bordure pour créer les bords de la boite.
Une grille principale qui contient :
- 3 lignes
- 2 colonnes

La première ligne contient une grille qui s'étant sur deux colonnes.
Dans cette grille est contenu un TextBlock pour le titre de la boite. (Utile si vous avez passé None au WindowStyle)

La deuxième ligne contient :
- Une image (error, information, question, warning) dans la première colonne. L'image est optionnelle (None)
- Le message à afficher dans la deuxième colonne.

La dernière ligne contient un stackpanel.
Ce stack panel contient 4 boutons (Ok, Yes, No, Cancel) qui sont personnalisable au niveau texte, pour pouvoir autoriser le multilangue.

Les boutons peuvent être flaggés mais le programme n'envoie pas d'erreur si les flags ne sont pas logiques; c'est à dire que seules les combinaisons suivantes produisent le bon résultat :
- OK
- OK | Cancel
- Yes | No
- Yes | No | Cancel

Pour pouvoir customiser votre message box il vous faut créer des styles aux noms très précis :

- BorderStyle pour customiser la bordure
- CancelButtonStyle pour customiser le bouton Cancel
- CaptionBarGridStyle pour customiser la grille qui contiendra le titre de la fenêtre (en partant du principe que WindowStyle vaut None)
- CaptionTextBlockStyle pour customiser le textblock qui contient le titre de la fenêtre.
- IconStyle pour customiser l'affichage des icônes (error, warning, ...)
- MainGridStyle pour customiser l'ensemble de la boite.
- MessageBoxWindowStyle pour customiser la fenêtre
- MessageTextStyle pour customiser l'affichage du message.
- NoButtonStyle pour customiser le bouton No.
- OkButtonStyle pour customiser le bouton OK.
- StackPanelStyle pour customiser le stack panel.
- YesButtonStyle pour customiser le bouton Yes.

J'ai décidé de pouvoir customiser chaque bouton d'où le nombre conséquent de *ButtonStyle.

6 petits exemples de style à disposition.

Il y'a aussi un wrapper du FolderBrowserDialog pour qu'il soit fonctionnel à WPF. (necessite System.Windows.Forms)

Conclusion :


Pour le moment la message apparaît obligatoirement au centre de l'écran.
La prochaine version permettra une meilleure stylisation de la boite de message et l'apparition en fonction de la position du propriétaire de la boite.

Et un folder browser full wpf.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
14842
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
15 octobre 2020
92
Sympa.
Dommage qu'il y ait des fautes d'orthographe dans le screenshot :P
Messages postés
268
Date d'inscription
lundi 1 mars 2004
Statut
Membre
Dernière intervention
19 avril 2012
11
Ben en fait, je voulais juste me rapprocher de l'utilisation des message box en Win32.
Néanmoins, note prise en compte...
Messages postés
234
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
3 novembre 2011
1
Dommage que la classe soit uniquement accessible en code-behind.

En effet il aurait été intéressant d'utiliser les DepedencyProperties pour décrire une MessageBox en Xaml ou utiliser le binding sur certaines propriétés. Il manque également le possibilité de pouvoir paramétrer les fenêtres de dialogues pour les rendre modales ou non.

Joli travail malgré tout,

Simon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.