2016-03-21 5 views
2

In meiner Folge zweiten conversion, fand ich einen convert Fehlerargument:nicht Ansichtsmodell und ObservableCollection

UserStackVM _listeStack = JsonWorker.ReadData(); 
ListeStacks = new ObservableCollection<UserStackVM>(_listeStack); // here 

Mein Fehler ist:

aus 'MyStack.ViewModels.UserStackVM' nicht konvertieren 'System.Collections.Generic.List'

UserStackVM ist ein Ansichtsmodell:

#region Properties 
     private string name; 
     ... 
     private string[] path; 
     ... 
     #endregion 

JsonWorker ist eine statische Klasse mit Json.NET (http://www.newtonsoft.com/json):

#region Properties 
     private static string _json; 
     private static UserStackVM _userStack; 
     #endregion  

     #region Methods 

     /// <summary> 
     /// Open the json config file. Create it if he doesn't exist. 
     /// </summary> 
     private static void OpenFile() 
     { 
      using (var stream = new FileStream(@"config.json", FileMode.OpenOrCreate)) 
      { 
       using (var reader = new StreamReader(stream)) 
       { 
        _json = reader.ReadToEnd(); 
       } 
      } 
     } 

     /// <summary> 
     /// Read the json config file and return all data. 
     /// </summary> 
     /// <returns></returns> 
     public static UserStackVM ReadData() 
     { 
      OpenFile(); 
      _userStack = JsonConvert.DeserializeObject<UserStackVM>(_json); 
      return _userStack; 
     }  
     #endregion 

Per Voraus vielen Dank für Ihre Hilfe.

+3

'ReadData' zurückkehrt nur einen einzigen Wert, bei dem als Konstruktor für' ObservableCollection' erfordert eine 'IEnumerable '. Ändern Sie einfach zur Verwendung des Auflistungsinitialisierers 'ListeStacks = new ObservableCollection {_listeStack};' –

Antwort

2

'MyStack.ViewModels. UserStackVM 'auf 'System.Collections.Generic.List'

Das ObservableCollection(T) Constructor erwartet eine List<T> (Liste der Instanzen); Sie stellen nur eine einzige Instanz bereit. Ändern Sie ihn auf

UserStackVM _listeStack = JsonWorker.ReadData(); 
ListeStacks = new ObservableCollection<UserStackVM>(); 

ListeStacks.Add(_listeStack); 

oder

ListeStacks = new ObservableCollection<UserStackVM> 
             (new List<UserStackVM>() { listeStack }); 
+0

Erfolg, danke! –

Verwandte Themen