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 :

[Prism] View ou ViewModel en premier


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut [Prism] View ou ViewModel en premier
    Salut à tous,

    Grande question que je me pose en utilisant prism, je dois faire un choix dans mon application :
    Est ce que je dois construire la view ou le viewmodel en premier ?

    Si vous avez des pistes je suis preneur.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Personellement, je fonctionne avec des régions et par conséquent il y a une injection du ViewModel dans la View. Etant donné que c'est la création de la View qui déclenche la construction du ViewModel, c'est du ViewFirst (bien que techniquement l'objet ViewModel soit construit en premier)

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    J'utilise aussi les regions, mais je commence à me perdre un peu, dans la bonne méthode à utiliser.

    Comment fais-tu pour référencer ton viewmodel et ta view ?

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Alors ma région est comme ceci dans le xaml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ContentControl prism:RegionManager.RegionName="LoginInfoRegion" />
    La view est comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public partial class LoginInfoView : ILoginInfoView
    {
    	public LoginInfoView()
    	{
    		InitializeComponent();
    	}
     
    	[ImportingConstructor]
    	public LoginInfoView(ILoginInfoViewModel viewModel):this()
    	{
    		DataContext = viewModel;
    	}
    }
    Le ViewModel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class LoginInfoViewModel : ViewModel, ILoginInfoViewModel
    {
    	public LoginInfoViewModel()
    	{ }
    }
    Et dans les déclarations du module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    _container.RegisterType<ILoginInfoView, LoginInfoView>();
    _container.RegisterType<ILoginInfoViewModel, LoginInfoViewModel>();
    _regionManager.RegisterViewWithRegion("LoginInfoRegion", () => _container.Resolve<ILoginInfoView>());

  5. #5
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    Bon ça me rassure je fais pareil.

    Deux petites questions:

    A quoi correspond le [ImportingConstructor] ?

    Pourquoi tu utilises RegisterViewWithRegion et non pas un _regionManager.RequestNavigate ?

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Pour le [ImportingConstructor]: Cet attribut précise au conteneur d'injection de dépendance quel constructeur utiliser lors de l'injection. En l'occurence, ici il y a deux constructeurs, il aurait tendance à prendre celui sans paramètres.

    Pour le RegisterViewWithRegion: Dans mes régions je n'utilise pas de navigation. Par conséquent, le RegisterViewWithRegion permet d'injecter le contenu de la région de manière automatique.

Discussions similaires

  1. Méthodologie Model-View-ViewModel au sein d'une application WPF
    Par Louis-Guillaume Morand dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 12/06/2015, 14h10
  2. Réponses: 8
    Dernier message: 10/02/2011, 23h06
  3. Binding Singleton - ViewModel - View
    Par staticx dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 15/12/2010, 13h02

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