2016-03-21 1 views
2

В моей последующей второй линии, я нашел аргумент ошибки преобразования:не может преобразовать ViewModel и ObservableCollection

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

Моя ошибка является:

не может конвертировать из «MyStack.ViewModels.UserStackVM» в '' System.Collections.Generic.List

UserStackVM является ViewModel:

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

JsonWorker представляет собой статический класс с использованием 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 заранее, спасибо за вашу помощь.

+3

'ReadData' возвращает только одно значение, где в качестве конструктора' ObservableCollection' требующего '' IEnumerable . Просто перейдите к использованию инициализатора коллекции 'ListeStacks = new ObservableCollection {_listeStack};' –

ответ

2

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

Это ObservableCollection(T) Constructor ожидает List<T> (список экземпляров); вы предоставляете только один экземпляр. Измените его на

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

ListeStacks.Add(_listeStack); 

или

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

Успех, спасибо! –