2014-12-11 10 views
5

Ich verwende nur MVVM Light-Bibliotheken (aus Nuget-Paket) in meinem Windows Phone 8 Projekt und ich möchte EventToCommand in ToggleSwitch verwenden. Ich habe diese Zeilen Code:WP8 MvvmLight Namespace fehlt und EventToCommand existiert nicht

<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> 

Das Problem ist, dass VS Fehler zeigt:

Fehler 1 Der Name "EventToCommand" existiert nicht im Namensraum „clr-namespace: GalaSoft.MvvmLight .Kommando; Montage = GalaSoft.MvvmLight.Extras.WP8 ".

Fehler 2 Der Typ 'Command: EventToCommand' wurde nicht gefunden. Stellen Sie sicher, dass keine Baugruppenreferenz fehlt und dass alle referenzierten Baugruppen erstellt wurden.

Fehler 3 Der Tag 'EventToCommand' existiert nicht in XML-Namespace 'clr-namespace: GalaSoft.MvvmLight.Command; Montage = GalaSoft.MvvmLight.Extras.WP8'.

Ich habe Zeilen weiter oben in der Datei Styles.xaml, die ein ResourceDictionary und ToggleSwitch Teil eines DataTemplate ist. Ich schließe die MvvmLight-Bibliothek mit dieser Zeile ein:

Was ist los? Warum bekomme ich diesen Fehler? Ich habe versucht, Google zu verwenden, aber ich konnte keine Lösung finden.

Antwort

5

Die Referenz, die Sie enthalten verwenden, um den Befehl falsch ist. Die richtige Referenz

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

Es ist ein Trick, diesen Hinweis zu erhalten, ohne eine einzige Zeile Code zu schreiben.

Nachdem Sie das MvvmLight nugget-Paket heruntergeladen haben, kompilieren Sie Ihr Projekt und öffnen Sie dann Ihre XAML-Datei in Expression Blend.

Klicken Sie dann auf das Symbol Assets auf der linken Symbolleiste (die untere) und beginnen Sie mit der Eingabe von "eventtocommand" (siehe Bild unten).

enter image description here

Sobald Sie sehen EventToCommand erscheinen in der Assets Panel, per Drag & Drop auf Ihre ToggleSwitch. Das ist es! Die Referenz wird Ihrem XAML automatisch hinzugefügt, ebenso wie der eigentliche Befehlscode.

+1

Danke, aktualisierte mvvmlight-Version, nur um den Namensraum zu finden, in dem EventToCommand geändert wurde. – f0x

0

Warum nicht verwenden? (Referenzen, fügen Sie Referenz, Erweiterungen, Verhalten sdk) Nicht sicher, aber ich denke EventTrigger und mvvm Licht EventToCommand ist jetzt veraltet (wegen Verhalten sdk).

Codebeispiel mit 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> 
+0

Ich denke, es ist für WP 8.1 richtig? Ich entwickle für WP8 (Silverlight-Projekt). –

+0

@LiborZapletal - ja Entschuldigung. es ist für winrt/wp8.1. – fex

Verwandte Themen