2012-06-29 4 views
6

Utilizzo MVVMLight da un po 'di tempo e ho iniziato a utilizzare V4 da quando è stato reso disponibile per la prima volta.<Interface> è già registrato errore nel blend utilizzando MVVMLightV4

Tuttavia un problema è sempre persistito con me che non sono stato in grado di risolvere.

Se creo un progetto utilizzando il modello di progetto MVVM 4, la soluzione si integra perfettamente, funziona bene e funziona bene in blend.

Tuttavia

Se inizio il mio progetto e installare MVVMLight V4 utilizza Nuget, non appena aggiungo anche un DataService di base e abilitare il codice commentato nel modello ViewModelLocator e aprire il progetto in Blend ho appena un errore:

"Class è già registrato"

Solo cercando di andare a fondo di questo errore molto fastidioso.

per intenderci non importa quanto nel DataService come anche con un'interfaccia e servizio con solo 1 funzione vuota dà lo stesso errore

risposta

22

Blend, per qualche ragione, può inizializzare la ViewModelLocator più una volta.

Quindi è necessario aggiungere un controllo:

if (!SimpleIoc.Default.IsRegistered<ISomeService>()) 
    SimpleIoc.Default.Register<ISomeService, SomeService>(); 
+0

che sarebbe bene tranne che non spiega il motivo per cui lo stesso codice funziona in modo diverso tra il modello nuovo progetto per MVVMLight e aggiunta di MVVMLight attraverso Nuget. Ma grazie per il lavoro svolto per ora – Darkside

+0

Thx trydis! La soluzione funziona! Stavo impazzendo con lo stesso problema usando Win8 –

+0

@IvanFioravanti Piacere mio. Mi stavo grattando la testa per un po 'di tempo prima di rendermi conto di cosa stava succedendo :) – trydis