[C#] Caliburn.Micro + Autofac window manager

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Rolandow
  • Registratie: Januari 2002
  • Laatst online: 15-09 16:56
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:

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.

Alle reacties


Acties:
  • +1 Henk 'm!

  • RoofTurkey
  • Registratie: Mei 2011
  • Laatst online: 17-09 14:41

RoofTurkey

PredatorKalkoen

Zonder kennis te hebben van deze specifieke oplossing vraag ik me meteen af of dit niet beter met een sessie kan worden opgelost. In principe zou je view (ik neem aan dat ik 'windows' als view/front-end kan zien) geen kennis van de back-end moeten hoeven doorgeven.

Mocht ik dit helemaal verkeerd interpreteren dan zou ik voor het geheugen vraagstuk een kijkje nemen in de debugger binnen visual studio. Open extreem veel windows, met dummy data of iets dergelijks en kijk hoe lang het duurt om hoeveel geheugen te vullen. Dat is de makkelijkste manier om erachter te komen zonder alles te gaan ontleden.

Grillmeister