2012-12-10 1 views
0

J'ai une application WPF vb.net qui a une fenêtre de dialogue modale qui a un bouton "Ok", "Annuler" et "Appliquer". Le bouton "Appliquer" fait le même travail que le bouton "Ok", mais lorsque vous cliquez sur "Appliquer", la boîte de dialogue modale doit rester ouverte. Normalement, j'aime appeler ShowDialog pour afficher un modal mais cela entraîne la fermeture du modal quand il revient donc je ne peux pas l'utiliser avec un modal qui a un bouton "Apply". Quelqu'un peut-il me fournir un travail facile autour? L'alternative est d'afficher la fenêtre de dialogue modale en utilisant .Show mais dans ce cas je ne sais pas comment retourner correctement les valeurs lorsque l'utilisateur clique sur l'un des boutons.Comment créer un bouton "Appliquer" sur une fenêtre de dialogue modale

Merci!

Répondre

2

La fermeture de la boîte de dialogue est gérée par le code qui s'exécute lorsque l'utilisateur clique sur le bouton OK. Vous pouvez donc déplacer tout ce code vers une fonction à l'exception de l'appel Close() et de l'appel qui définit DialogResult. Vous pouvez ensuite appeler cette fonction depuis le gestionnaire OK (ou ICommand) et le gestionnaire Apply (ou ICommand). Ensuite, n'appelez pas Close() depuis le bouton Apply.

+0

Le problème avec cette approche est que j'ai encore besoin de renvoyer des données de formulaire à la fenêtre qui crée la boîte de dialogue et appelle ShowDialog. – zzMzz

+1

Vous pouvez utiliser des événements pour cela. – Tim

+0

+1 à Tim! Merci, c'est absolument correct. C'est la pièce qui me manquait. – zzMzz

0

Les dialogues avec un bouton "Appliquer" ne sont généralement pas modaux, mais une approche serait d'instancier votre boîte de dialogue et de l'utiliser avec un ViewModel via DataContext où vos données de dialogue peuvent être partagées entre la fonction appelant et le dialogue lui-même. Ensuite, câblez votre bouton "Appliquer" pour qu'il soit géré par le dialogue modal et quel que soit le code ViewModel que vous avez, peut-être via une liaison ICommand. Dites-nous si un échantillon serait utile.

Questions connexes