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.
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.
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)
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
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 ?
Alors ma région est comme ceci dans le xaml:
La view est comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <ContentControl prism:RegionManager.RegionName="LoginInfoRegion" />
Le ViewModel :
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; } }
Et dans les déclarations du module:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public class LoginInfoViewModel : ViewModel, ILoginInfoViewModel { public LoginInfoViewModel() { } }
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>());
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
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 ?
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.
Retrouvez moi sur :
Mon Espace Developpez.com-------------------------------
Dvp.NET, une librairie open-source de composants .NET
Mon blog: Up there in the code----------------------------
Twitter: NatMarchand
Ma société: So@t
Showrizo : Suivez votre planning de séries télé sous Windows 8
Partager