IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[C#][MVVM] Event Singleton (variable pour l'application)


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Par défaut [C#][MVVM] Event Singleton (variable pour l'application)
    Bonjour,

    Précédemment j'avais créer une discussion (que je vient de délester, pour la simple raison que les gens qui passeront sur cette discussion plutôt que l'autre verront plus rapidement une solution s'ils ont le même problèmes ^^)
    Je voulais pouvoir voir et modifier des variable depuis des fenêtres différentes

    On m'as donné ma réponse, un Singleton avec des Delegate et Event.

    Par contre, malgré les exemple sur le net je n'arrive pas a utiliser la chose.

    Qui aurais des exemples (si ca se trouve les vôtres me mèneront pi être vers le droit chemin ><).
    Besoin d'un exemple d'une classe Singleton et son utilisation dans le ViewModel variable en lecture comme en modification (par exemple a la suite d'une Command).

    Merci.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    On m'as donné ma réponse
    Où ça ?
    un Singleton avec des Delegate et Event
    Ca semble un peu lourd; quelles données sont concernées ?

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par seriousme Voir le message
    Ca semble un peu lourd; quelles données sont concernées ?
    En effet, surtout si c'est seulement pour voir et modifier des variables depuis des fenêtres différentes...

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Par défaut
    Pas temps que ca (enfin a mon goût).
    une pour la background de la fenêtre principale et 1 autres pour la connexion: pour la personne loger actuellement

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Août 2010
    Messages : 188
    Par défaut
    Bon finalement j'ai trouver tout seul comme un grand

    mes codes sont les suivants (car c'est toujours mieux de partager):
    [C#] mon Singleton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
        sealed class AppControler
        {
            #region Member Fields
     
            /// <summary>
            /// The variable to create the Singleton.
            /// </summary>
            private static AppControler _instance = new AppControler();
     
     
            /// <summary>
            /// Lock synchronization object.
            /// </summary>
            private static object syncLock = new object();
     
            /// <summary>
            /// The variable to create the Singleton.
            /// </summary>
            private string _BackgroundSource;
     
            #endregion
     
            #region Constructor
     
            private AppControler()
            {
                _BackgroundSource = "URL de l'image";
            }
     
            #endregion
     
            #region GetInstance
     
            public static AppControler GetAppControler()
            {
                lock (syncLock)
                {
                    if (_instance == null)
                    {
                        _instance = new AppControler();
                    }
                }
                return _instance;
            }
     
            #endregion
     
            #region Get Background value
     
            /// <summary>
            /// Gets and sets Value App Controler
            /// </summary>
            /// <value>Background Source Value.</value>
            public string BackgroundSource
            {
                get { return _BackgroundSource; }
            }
     
            #endregion
     
            #region Event Handler
     
            public delegate void NotifyBackgroundSourceEventHandler(object sender, string info);
            public event NotifyBackgroundSourceEventHandler NotifyBackgroundSource;
     
            #endregion
     
            #region Set Notify value
     
            public void BackgroundChangeRequest(object sender, string newSource)
            {
                if (NotifyBackgroundSource != null)
                    NotifyBackgroundSource(sender, newSource);
            }
     
            #endregion
        }
    [C#] mon MVVM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    public class ViewModelParameter : ViewModelBase
        {
            #region Member Fields
    
            /// <summary>
            /// The variable that is use to store the Command.
            /// </summary>
            private RelayCommand m_CommandOK;
    
            /// <summary>
            /// The variable App Controler
            /// </summary>
            private AppControler appControler;
            private string _BackgroundSource;
    
            #endregion
    
            #region Properties
    
            /// <summary>
            /// Gets Commands.
            /// </summary>
            /// <value>The OK Command.</value>
            public ICommand CommandOK
            {
                get
                {
                    if (m_CommandOK == null)
                    {
                        m_CommandOK = new RelayCommand(param => CanSave(), param => Save());
                    }
    
                    return m_CommandOK;
                }
            }
    
            /// <summary>
            /// Gets and set background value.
            /// </summary>
            /// <value>Background source Value.</value>
            public string BackgroundSource
            {
                get { return _BackgroundSource; }
                set
                {
                    _BackgroundSource = value;
                    OnPropertyChanged("BackgroundSource");
                }
            }
    
            #endregion
            
            #region Constructors
    
            /// <summary>
            /// Initializes a new instance of the <see cref="ViewModelParameter"/> class.
            /// </summary>
            public ViewModelParameter()
            {
                appControler = AppControler.GetAppControler();
    
                appControler.NotifyBackgroundSource += OnNotifyBackgroundSource;
    
            #endregion
    
            #region OnNotify Event Handlers
    
            void OnNotifyBackgroundSource(object sender, string info)
            {
                BackgroundSource = info; //tout ce joue ici pour changer dynaiquement
            }
    
            #endregion
    
            #region Event Handlers
    
            /// <summary>
            /// Determines whether can save parameter.
            /// </summary>
            /// <returns>
            ///     <c>true</c> if can save; otherwise, <c>false</c>.
            /// </returns>
            public static bool CanSave()
            {
                return true;
            }
    
            /// <summary>
            /// Save parameter.
            /// </summary>
            public void Save()
            {
                appControler.BackgroundChangeRequest(this, "nouvelle URL d'un image");
            }
    
            #endregion
    [XAML] et ma Window contient ceci (un rectangle pour l'image et un bouton pour changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Rectangle Height="150" HorizontalAlignment="Left" Margin="6,6,0,0" Stretch="Fill" VerticalAlignment="Top" Width="200">
            <Rectangle.Fill>
                    <ImageBrush ImageSource="{Binding BackgroundSource}" />
            </Rectangle.Fill>
    </Rectangle>
    <Button Command="{Binding CommandOK}" Content="OK" />
    PS: les code en Balcn peuvent être réutiliser quasiment a l'identique dans d'autre fenêtres. toute celle utilisant ces bouts de code se verront changer aussi en même temps les modif.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/01/2015, 18h59
  2. Réponses: 4
    Dernier message: 28/09/2009, 17h28
  3. Réponses: 11
    Dernier message: 19/05/2009, 16h52
  4. Réponses: 4
    Dernier message: 23/04/2009, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo