2012-06-29 17 views
6

He estado utilizando MVVMLight desde hace un tiempo y comencé a usar V4 desde que estuvo disponible por primera vez.<Interface> error ya registrado en blend usando MVVMLightV4

Sin embargo, un problema siempre ha persistido conmigo y no he podido resolverlo.

Si creo un proyecto utilizando la plantilla de proyecto MVVM 4, la solución se compila bien, funciona bien y funciona bien en blend.

Sin embargo

Si comienzo mi propio proyecto e instalar MVVMLight V4 utilizando Nuget, tan pronto como se agrego incluso un DataService básico y activar el código comentado en la plantilla ViewModelLocator y abrir el proyecto en Blend acabo obtener un error:

"Clase ya está registrado"

Sólo tratando de llegar al fondo de este error muy molesto.

Para que quede claro que no importa lo que está en el DataService ya que incluso con una interfaz y servicio con sólo el 1 función de vacío da el mismo error

Respuesta

22

Blend, por alguna razón, puede inicializar el ViewModelLocator más de una vez.

Así que hay que añadir un cheque:

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

Eso estaría bien, excepto que no explica por qué exactamente el mismo código funciona de forma diferente entre la plantilla Nuevo proyecto para MVVMLight y adición de MVVMLight través Nuget. Pero gracias por el trabajo alrededor por ahora – Darkside

+0

Thx trydis! ¡La solución funciona! Me estaba volviendo loco con el mismo problema usando Win8 –

+0

@IvanFioravanti Mi placer. Me estaba rascando la cabeza por un tiempo antes de darme cuenta de lo que estaba sucediendo :) – trydis

Cuestiones relacionadas