Aangezien de documentatie van CM zelf aangeeft dat de Window Manager niet te documenteren is, wil ik hier even checken of ik op de goede weg ben.
Ik heb Caliburn.Micro samen met Caliburn.Micro.Autofac geconfigureerd volgens het boekje. In mijn ShellViewModel kan ik in de constructor dus de objecten zetten die ik nodig heb. De vraag is hoe ik dit doorgeef, als ik een nieuwe window wil openen.
Autofac raadt af om zelf services te resolven. Die zou qua onderhoud ook niet handig zijn, want als er een dependency bijkomt voor mijn window, dan zou ik dit bij het 'newen' ook moeten aanpassen. Dat is juist wat autofac voor je op moet lossen.
Ik heb het nu opgelost door in de constructor van ShellViewModel het viewmodel van het window dat ik wil openen te vragen. Maar ik vraag me af of dit geen geheugen gaat vreten als ik een stuk of 20 van dit soort windows moet kunnen openen vanuit de ShellView?
Dit is mijn ShellViewModel nu:
Ben ik op de goede weg of juist niet? :-)
Ik heb Caliburn.Micro samen met Caliburn.Micro.Autofac geconfigureerd volgens het boekje. In mijn ShellViewModel kan ik in de constructor dus de objecten zetten die ik nodig heb. De vraag is hoe ik dit doorgeef, als ik een nieuwe window wil openen.
Autofac raadt af om zelf services te resolven. Die zou qua onderhoud ook niet handig zijn, want als er een dependency bijkomt voor mijn window, dan zou ik dit bij het 'newen' ook moeten aanpassen. Dat is juist wat autofac voor je op moet lossen.
Ik heb het nu opgelost door in de constructor van ShellViewModel het viewmodel van het window dat ik wil openen te vragen. Maar ik vraag me af of dit geen geheugen gaat vreten als ik een stuk of 20 van dit soort windows moet kunnen openen vanuit de ShellView?
Dit is mijn ShellViewModel nu:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public class ShellViewModel : Screen { IWindowManager windowManager; RelatieViewModel _relatieViewModel; public ShellViewModel(IWindowManager windowManager, RelatieViewModel relatieViewModel) { this.windowManager = windowManager; this._relatieViewModel = relatieViewModel; } public void OpenRelaties() { this.windowManager.ShowWindow(this._relatieViewModel, null, null); } } |
Ben ik op de goede weg of juist niet? :-)
Koffie met thee is minder lekker.