Comment appeler la méthode de la fenêtre principale du WPF de la fenêtre modale? p>
(En fait, je veux démarrer une minuterie du mainwindow.xaml.cs lorsque je ferme une fenêtre de modèle.) p>
Merci! P>
5 Réponses :
Il y a beaucoup de façons de faire cela. P>
Vous pouvez surcharger le constructeur de la fenêtre modale de telle sorte que vous puissiez transmettre une référence à cette fonction, ou la fenêtre principale. Ou, ajoutez une propriété à cette fenêtre. P>
Vous pouvez également démarrer la minuterie de la ligne suivante dans le code de la fenêtre principale indiquant la fenêtre modale. P>
Ce que vous pouvez faire est avant d'ouvrir votre deuxième fenêtre Attribuer la fenêtre principale en tant que propriétaire, puis à partir de la fenêtre modale appelez la propriété propriétaire, jeté dans un objet Mainwindowow et vous pourrez exécuter la méthode.
// Code in main window ModalWindow window = new ModalWindow(); window.Owner = this; window.ShowDialog() //Code on the modal window var myObject = this.Owner as MainWindow; myObject.MyMethod(); // Call your method here.
Je reçois ceci: "Impossible de définir la propriété propriétaire vers une fenêtre qui n'a pas été montrée précédemment". Il semble que window.Owner ne peut pas précéder Showdialog ...
Si cette fenêtre de modèle s'ouvrira du Il suffit d'ajouter le code après cet appel et il sera exécuté après la fermeture de la fenêtre modale. p> li>
Si la fenêtre modale est ouverte ailleurs, mais à la fermeture doit exécuter le code sur une pièce parfaitement non liée, peut utiliser, par exemple, Commandes ou RelaisCommand (type d'appel de délégué direct). p> li>
ul>
J'espère que cela aide. P> MAINWINDOW CODE>, comme ça, disons p>
modalwindow.showdialog () code> p>
Vous pouvez joindre un gestionnaire d'événements à l'événement "Clôture" de la boîte de dialogue modale, qui serait exécuté dans le programme principal lorsque la boîte de dialogue tire cet événement. P>
public class ModalWindow : Window { private MainWindow _parent; public ModalWindow(MainWindow parent) { _parent = parent; Owner = parent; } void CallParent() { _parent.Call(); } } I would suggest this kind of pattern is a code smell. If your goal is to pass information from the modal to the parent, better to expose properties on the modal window and, after it closes, read those values and perform whatever actions are necessary in the parent. If your goal is to pass information from the parent to the modal, then pass it into the constructor or public properties before calling ShowDialog().