Comment puis-je savoir si une fenêtre WPF est ouvert
Dans une fenêtre WPF, comment puis-je savoir si il est ouvert?
Mon objectif d'ouvrir seulement 1 instance de la fenêtre à l'époque.
Donc, mon pseudo-code dans la fenêtre parente est:
if (this.m_myWindow != null)
{
if (this.m_myWindow.ISOPENED) return;
}
this.m_myWindow = new MyWindow();
this.m_myWindow.Show();
EDIT:
J'ai trouvé une solution qui résout mon problème initial.
de la fenêtre.ShowDialog();
Il bloque l'utilisateur à partir de l'ouverture d'une autre fenêtre, tout comme un modal popup.
L'utilisation de cette commande, il n'est pas nécessaire de vérifier si la fenêtre est déjà ouverte.
- Merci pour la mise à jour! de la fenêtre.ShowDialog() est exactement ce dont j'avais besoin!
Vous devez vous connecter pour publier un commentaire.
Dans
WPF
il y a une collection de l'openWindows
dans leApplication
la classe, vous pouvez faire une méthode d'aide à vérifier si la fenêtre est ouverte.Voici un exemple qui va vérifier si l'un
Window
d'un certainType
ou si unWindow
avec un certain nom, est ouverte, ou les deux.Utilisation:
Application.Current.Windows
est une liste de toutes les Fenêtres qui ont été instanciés (pas nécessairement ouverte)Vous pouvez vérifier si
m_myWindow==null
et ensuite seulement de créer et d'afficher la fenêtre. Lorsque la fenêtre se ferme, définissez la variable à null.Voici une autre façon de le réaliser à l'aide de LINQ.
Utilisation:
Si vous avez besoin d'activer la fenêtre si elle est trouvée, vous pouvez utiliser le code ci-dessous:
Mettre un static bool dans votre classe, nommé
_open
ou quelque chose comme ça.Dans le constructeur, puis faire ceci:
et dans l'événement Fermé:
Est ce que vous cherchez ?
Si vous voulez un singleton, vous devriez lire ceci : Comment pouvons-nous créer une Instance du Singleton pour une Fenêtre?
Kullanımı: