none
MVVM Light et bonne pratique RRS feed

  • Question

  • Bonjour,

    J'essaye actuellement d'apprendre à utiliser MVVMLight avec Simple IOC mais j'ai du mal à saisir certain aspect.
    Je n’arrive pas vraiment à faire une navigation au sein de ma fenêtre WPF.

    J'ai donc fini par créer un MainViewModel qui sera un conteneur d'un objet de type ViewModelBase (hérité) et que j'ai nommé Current. (Afficher dans la view)

    Mon problème est alors de modifier ce Current pour afficher mon nouveau contenu.

    J'ai donc associé mes viewmodels à leur datatemplate dans le fichier app.xaml..

    Mon problème est donc le suivant :

    • Quelle action doit effectuer mon menu pour charger une nouvelle fenêtre en utilisant le ViewModelLocator ?
    • Dois-je initialiser mon ViewModelLocator et comment s'en servir ?
    • Dois-je créer une classe intermédiaire de mon ViewModelBase pour ajouter des comportements ?

    Voici l'exemple que j'ai commencé (désolé il n'y a vraiment pas grand chose) mais dans lequel je me sens bloqué.

    http://www.sendbox.fr/3146dffbd95c7f9b/Process_Manager.rar
    ou
    https://ufile.io/loicb

    Je cherche à apprendre à faire les choses en respectant les bonnes pratiques.

    Soyez indulgent s'il vous plait.

    Merci d'avance


    • Modifié GLionhart samedi 19 août 2017 16:16 lien
    samedi 19 août 2017 16:12

Réponses

  • Bonjour,

    Alors, oui, pour chaque ViewModel crée tu dois créer cette propriété.

    Pour la vue, l'idéal est d'avoir une vue associée à un ViewModel.

    J'espère que j'ai bien répondu à votre question.


    Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse GLionhart jeudi 26 avril 2018 13:32
    mardi 13 février 2018 09:36

Toutes les réponses

  • Bonsoir,

          

    Quelle action doit effectuer mon menu pour charger une nouvelle fenêtre en utilisant le ViewModelLocator ?


    ==> Le ViewModelLocator contient les références vers les view models principaux de l'application.
    et au démarrage de l'application les view models principaux de l'application sont chargés. 
    Donc pas besoin d'effectuer une action depuis votre menu pour charger une nouvelle fenêtre via le ViewModelLocator


    Dois-je initialiser mon ViewModelLocator et comment s'en servir ?

    ==> Il s'initialise au démarrage de l'application. Voici un exemple de ViewModelLocator : 

    /// <summary>
        /// Classe contenant des références statiques vers les view model principaux de l'application
        /// </summary>
        public class ViewModelLocator
        {
            /// <summary>
            /// Initialise une nouvelle instance
            /// </summary>
            public ViewModelLocator()
            {
                ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
    
                if (ViewModelBase.IsInDesignModeStatic)
                {
                    //Register default services
                    SimpleIoc.Default.Register<INetworkService, NetworkService>();
                    SimpleIoc.Default.Register<IDialogService, DialogService>();
                    SimpleIoc.Default.Register<IToastService, ToastService>();
                    SimpleIoc.Default.Register<INavigationService, NavigationService>();
    
                    // Register specific application services
                    SimpleIoc.Default.Register<IDataService, DataService>();
                }
    
                SimpleIoc.Default.Register<MainViewModel>();
    
            }
    
            /// <summary>
            /// Obtiens le view model principal de l'application
            /// </summary>
            public MainViewModel Main
            {
                get
                {
                    return ServiceLocator.Current.GetInstance<MainViewModel>();
                }
            }
    
            /// <summary>
            /// Permet de nettoyer les view models
            /// </summary>
            public static void Cleanup()
            {
               
            }
        }

    Dois-je créer une classe intermédiaire de mon ViewModelBase pour ajouter des comportements ?

    ==> Que voulez-vous dire par là?

    J'espère que j'ai bien répondu à votre question.


    Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse GLionhart mercredi 7 février 2018 14:45
    • Non marqué comme réponse GLionhart mercredi 7 février 2018 14:46
    mardi 22 août 2017 19:13
  • Bonjour,

    Je reviens sur le sujet pour avoir des éclaircissement.

    Mon problème est plutôt comment afficher une vue ou une autre ? (Il me faut modifier la variable Current mais quel est la façon la plus appropriée ?

    Pour chaque ViewModel et Vue dois-je enregistrer une nouvelle propriété de la manière suivante ?

      /// <summary>
            /// Obtiens le view model principal de l'application
            /// </summary>
            public MainViewModel Main
            {
                get
                {
                    return ServiceLocator.Current.GetInstance<MainViewModel>();
                }
            }

    Merci d'avance. (Désolé pour ma réponse très tardive)

    mercredi 7 février 2018 15:07
  • Bonjour,

    Alors, oui, pour chaque ViewModel crée tu dois créer cette propriété.

    Pour la vue, l'idéal est d'avoir une vue associée à un ViewModel.

    J'espère que j'ai bien répondu à votre question.


    Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post

    Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi


    Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;

    • Marqué comme réponse GLionhart jeudi 26 avril 2018 13:32
    mardi 13 février 2018 09:36