2010-09-07 9 views
1

Quelle est la meilleure façon (dans une application WPF, C#) d'implémenter un comportement de contrôle basé sur le statut/mode actuel de la fenêtre? Par exemple, disons que les modes peuvent être simplement OFFLINE, ONLINE par exemple.Application WPF - comment gérer les modes/états des contrôles dans une fenêtre?

Donc, lorsque OFFLINE vous voulez que les contrôles d'entrée de configuration soient actifs, cependant, dès que le traitement commence (ONLINE), vous voulez que ces contrôles soient grisés.

Avez-vous des suggestions sur les modèles/approches pour gérer cela? Je me demande s'il y a une approche de publication/abonnement qui serait la meilleure, ou juste créez une méthode d'aide comme "SetStatus" et faites tous les appels aux commandes d'ici.

grâce

Répondre

3

Je lieraient la propriété IsEnabled de tout ce qui contient vos contrôles d'entrée de configuration à une valeur booléenne qui inspecte l'état/du mode actuel. L'inconvénient de cette approche est que vous devrez faire un appel à cette propriété chaque fois que le mode est changé. Mais cela peut être facilitée par l'utilisation des propriétés qui enveloppent autour d'un élément variable de

//Assumes your mode enum is defined and named WindowModes 
private WindowModes m_CurrentMode; 
public WindowModes 
{ 
    get { return m_CurrentMode; } 
    set 
    { 
     m_CurrentMode = value; 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs("CanConfigure")); 
    } 
} 

public bool CanConfigure 
{ 
    return(WindowMode == WindowModes.Online) 
} 

Bien sûr, si votre mode IS booléen tel que ONLINE/OFFLINE. alors vous pourriez simplement envelopper cette valeur de la même manière. Cette approche a bien sûr divers problèmes d'évolutivité et est assez restrictive en termes de classe, mais je l'ai trouvée utile dans certains scénarios.