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 :

Utilisation du SimpleIoc avec les Views


Sujet :

Windows Presentation Foundation

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Utilisation du SimpleIoc avec les Views
    Bonjour à tous,
    Je suis débutant avec le framework MVVM Light et j'ai un gros problème de compréhension au niveau du container SimpleIoc.
    Je cherche des tutos dessus depuis des jours mais pas moyen de trouver quoi que ce soit d'assez complet et qui soit destiné aux débutants.
    Dans mon projet, j'ai plusieurs fenêtres et j'aimerai utiliser SimpleIoc pour instancier mes fenêtres à partir d'un ViewModel.

    Du coup j'ai ajouté dans mon mainWindow.xaml.cs le code suivant :
    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
     
    public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                SimpleIocInitialize();
            }
     
            private void SimpleIocInitialize()
            {
                SimpleIoc.Default.Register<IAboutWindow, AboutWindow>();
                SimpleIoc.Default.Register<IConfigurationWindow, ConfigurationWindow>();
                SimpleIoc.Default.Register<IClientWindow, ClientWindow>();
            }
        }
    Mes interfaces sont vides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public interface IAboutWindow {}
    public interface IConfigurationWindow {}
    public interface IClientWindow {}
    J'aimerai pouvoir instancier une fenêtre (avec un ShowDialog) depuis n'importe quel ViewModel mais lorsque j'essaie de récupérer une instance, je n'ai pas accès aux méthodes de la fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class MainViewModel : ViewModelBase
        {
            public MainViewModel()
            {
                var window = ServiceLocator.Current.GetInstance<IAboutView>();
                window.ShowDialog(); //ça ne marche pas.
            }
        }
    Je crois que je récupère une instance de l'interface IAboutView plutôt que la fenêtre ... Je suppose que mon problème vient du fait que je comprends mal l'utilisation du SimpleIoc. Si quelqu'un peut corriger mon code ou me donner un exemple d'utilisation, ce serait très sympa !

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    En fait l'idée derrière tout ça c'est que tu vas travailler avec des interfaces dans ton code. Et l'IoC, c'est pour stocker l'instance qui implémente l'interface.

    L'avantage est que tu peux alors changer l'instance (pour des unit tests, par exemple), mais ton code ne changera pas vu que c'est toujours la même interface (mais avec une implémentation différente). (A part une ligne ou tu registre la classe qui implémente l'interface dans le IoC)

    Maintenant c'est souvent pour des services (service navigation, service données,etc...) pour les vues, je ne suis pas sûr que cela ait un grand intérêt (en général).

    Alors deux choses l'une, soit tu registre ta vue elle-même et pas l'interface (ce qui n'a pas vraiment de sens, autant instancier la vue avec un new dans ton code)

    Soit tu ajoutes les méthodes et propriétés dont tu as besoin ton interface. Et alors tu pourra les appeler.
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

Discussions similaires

  1. Utilisation des PGN avec les navigateurs IE & FF
    Par HWICE dans le forum Internet
    Réponses: 7
    Dernier message: 17/01/2008, 20h21
  2. Utilisation de sed avec les variables dans un Shell
    Par mbole dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 05/07/2007, 17h46
  3. Réponses: 5
    Dernier message: 17/05/2007, 01h19
  4. Utilisation de foreach avec les sessions sous PHP5
    Par frochard dans le forum Langage
    Réponses: 1
    Dernier message: 11/11/2006, 01h14
  5. (Débutant API) Utilisation de Richedit avec les APIs
    Par LibrairieSI dans le forum Windows
    Réponses: 2
    Dernier message: 10/08/2005, 16h53

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