2014-10-13 12 views
5

Sto usando VS2013 Express. Sono abbastanza nuovo in WPF e MVVM. Ho scaricato mvvmlight usando NuGet per il mio progetto. Sto cercando di usare GalaSoft_MvvmLight_Command:EventToCommand. Per quanto ne so, devo aggiungere di riferimento in XAML con l'aggiunta dello spazio dei nomi:Dove trovo l'assemblaggio Galasoft.MvvmLight.WPF45?

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

Ma, sfortunatamente ottengo l'errore, che dice:

Il tag 'EventToCommand' non esiste in XML namespace 'clr-namespace: GalaSoft.MvvmLight; assembly = GalaSoft.MvvmLight'.

Ho trovato alcune informazioni, che devo includere GalaSoft.MvvmLight.WPF45 montaggio, ma non vedo questa dll in pacchetti \ MvvmLightLibs.5.0.0.1 \ lib \ cartella. Ci sono molte cartelle, per ogni versione .NET ecc., Ma ognuno di questi nomi di assembly è lo stesso, senza sufix WPF45. Cosa sta succedendo? Dove posso trovare questo assembly GalaSoft.MvvmLight.WPF45.dll? O forse nella versione 5 sono state apportate alcune modifiche ai nomi?

Modifica: Utilizzo del browser degli oggetti Ho rilevato che EventToCommand è in GalaSoft.MvvmLight.Platform assembly in GalaSoft.MvvmLight.Command namespace. Così ho fatto

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

posso compilare progetto ora, ma ho ancora ottenere gli errori in XAML (ciò che è strano):

Un valore di tipo 'EventToCommand' non può essere aggiunto a una raccolta o un dizionario di tipo 'TriggerActionCollection'

e

Il tipo 'EventToCommand' dall'assembly 'Ga laSoft.MvvmLight.Platform 'è costruito con una versione precedente di Blend SDK e non è supportato in un progetto di Windows Presentation Framework 4.

e l'editor xaml non possono visualizzare correttamente la finestra (markup non valido).

Edit2:

Soluzione per il markup non valido.

Dopo aver modificato lo spazio dei nomi su xmlns:cmd="http://www.galasoft.ch/mvvmlight", cambio anche il framework di destinazione del progetto da 4,5 a 3,5. L'IDE mostra un errore riguardo al fatto che ci sono pochi pacchetti NuGet che hanno come target altri framework, quindi sono tornato a 4.5 - e ora funziona magicamente;). Grazie a tutti per l'aiuto.

+0

Prova questa. xmlns: cmd = "CLR-namespace: GalaSoft.MvvmLight.Command; assemblaggio = GalaSoft.MvvmLight.Platform". È necessario anche [questo] (https://www.nuget.org/packages/Expression.Blend.Sdk/) pacchetto nuget – VivekDev

risposta

3

Ecco come è fatto ora nel tuo XAML presumendo che tu abbia la versione 4.0.0. Battere 1 o superiore:

xmlns: cmd = "http://www.galasoft.ch/mvvmlight"

ho trovato questo in fondo le note di rilascio qui: http://www.mvvmlight.net/installing/changes/

Dettagli XmlnsDefinitionAttribute per GalaSoft.MvvmLight.Command in Extra assemblaggio

Grazie all'aggiunta di XmlnsDefinitionAttribute, è possibile semplificare l'inserimento dell'azione MVVM Luce EventToCommand in XAML. Vedere il prima e dopo di seguito:

Prima:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 

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

xmlns:cmd="http://www.galasoft.ch/mvvmlight" 
x:Class="MvvmLight4.MainPage"> 

Dopo:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
xmlns:cmd="http://www.galasoft.ch/mvvmlight" 
x:Class="MvvmLight4.MainPage"> 
+0

Ho cambiato spazi dei nomi, ma continuo a ricevere errori con la versione precedente. Ma grazie, funziona ora bene. –

+0

Non ha funzionato per me con WPF 4.5 - Ancora lo stesso errore! – Thierry

+0

Non ha fatto un balzo di differenza. Scusate. – AndyUK

0

EventToCommand esiste nell'assieme Extras.

Prova:

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

Ulteriori informazioni:

Per determinare l'assemblaggio di una classe cade in, di solito Vai a definizione e l'assemblaggio viene fatto riferimento nella regione a la parte superiore del file di codice [dai metadati].

+0

Ora ottengo lo spazio dei nomi CLR non definito;). Primo post aggiornato. –

+0

Provato anche in un WPF 4.5.2, e come @BartoszRosa, ricevo 'EventToCommand' non esiste nello spazio dei nomi e un secondo errore, ad esempio EventToCommand non esiste. – Thierry

Problemi correlati