c# windows-phone-8 mvvm mvvm-light

c# - Falta el espacio de nombres WP8 MvvmLight y EventToCommand no existe



windows-phone-8 mvvm-light (2)

¿Por qué no utilizar Microsoft.Behaviors SDK ? (referencias, agregar referencia, extensiones, comportamiento sdk) No estoy seguro pero creo que EventTrigger y mvvm light EventToCommand están obsoletos ahora (debido a los comportamientos sdk).

Ejemplo de código con Behaviors.SDK:

xmlns:interactivity="using:Microsoft.Xaml.Interactivity" xmlns:core="using:Microsoft.Xaml.Interactions.Core" <toolkit:ToggleSwitch x:Name="LockSwitch" IsChecked="{Binding IsLock, Mode=TwoWay}"> <interactivity:Interaction.Behaviors> <core:EventTriggerBehavior EventName="Toggled"> <core:InvokeCommandAction Command="{Binding command}" CommandParameter="{Binding param}"/> </core:EventTriggerBehavior> </interactivity:Interaction.Behaviors> </toolkit:ToggleSwitch>

Estoy utilizando bibliotecas MVVM Light solamente (del paquete Nuget) en mi proyecto Windows Phone 8 y quiero usar EventToCommand en ToggleSwitch . Tengo estas líneas de códigos:

<toolkit:ToggleSwitch x:Name="LockSwitch" IsChecked="{Binding IsLock, Mode=TwoWay}"> <i:Interaction.Triggers> <i:EventTrigger EventName="Toggled"> <Command:EventToCommand Command="{Binding DataContext.NavigateToArticleCommand, ElementName=LayoutRoot}" CommandParameter="{Binding}" /> </i:EventTrigger> </i:Interaction.Triggers> </toolkit:ToggleSwitch>

El problema es que VS muestra errores:

Error 1 El nombre "EventToCommand" no existe en el espacio de nombres "clr-namespace: GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight.Extras.WP8".

Error 2 No se encontró el tipo ''Command: EventToCommand''. Verifique que no le falta una referencia de ensamblado y que todos los ensamblados a los que se hace referencia han sido construidos.

Error 3 La etiqueta ''EventToCommand'' no existe en el espacio de nombres XML ''clr-namespace: GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight.Extras.WP8''.

Tengo líneas arriba en el archivo Styles.xaml que es ResourceDictionary y ToggleSwitch es parte de una DataTemplate . Estoy incluyendo la biblioteca MvvmLight usando esta línea:

xmlns:Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP8"

¿Qué pasa? ¿Por qué me da ese error? Intentaba usar google pero no pude encontrar una solución.


La referencia que usa para incluir el comando es incorrecta. La referencia correcta es

xmlns:Command="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Platform"

Hay un truco para obtener esta referencia sin escribir una sola línea de código.

Después de haber descargado el paquete nuget MvvmLight, compile su proyecto y luego abra su archivo xaml en Expression Blend.

A continuación, haga clic en el icono de Activos en la barra de herramientas izquierda (la inferior) y comience a escribir "eventtocommand" (ver imagen a continuación).

Una vez que vea que EventToCommand aparece en el panel de Contenidos , arrástrelo y suéltelo sobre su ToggleSwitch . ¡Eso es! La referencia se agregará a su xaml automáticamente, así como el código de comando real.