2014-04-07 86 views
0

我有哪里我尝试我的项目添加到我的观察到的集合问题,但我得到这个错误:C#无法将项目添加到观察的集合

参数1:无法从“System.Collections.Generic转换.LIST”到 'GameFinder.GetGamesList'

代码:

private void RequestCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 

     if (e.Error == null) 
     { 
      var feedXml = XDocument.Parse(e.Result); 

      var gameData = feedXml.Root.Elements("Game").Select(x => new GetGamesList 
      { 
       ID = (int)x.Element("id"), 
       GameTitle = (string)x.Element("GameTitle"), 
       ReleaseDate = (string)x.Element("ReleaseDate"), 
       Platform = (string)x.Element("Platform") 
      }) 
       .ToList(); 
      Items.Add(gameData); // THE ERROR IS HERE - Items is the observablecollection 
     } 
    } 

private ObservableCollection<GetGamesList> _Items = new ObservableCollection<GetGamesList>(); 
    public ObservableCollection<GetGamesList> Items 
    { 
     get 
     { 
      return this._Items; 
     } 
    } 

public class GetGamesList 
{ 
    public int ID { get; set; } 
    public string GameTitle { get; set; } 
    public string ReleaseDate { get; set; } 
    public string Platform { get; set; } 
} 

回答

1

尝试

foreach (var item in gameData) Items.Add(item) 

gameDataList<GetGamesList>所以你需要的每个项目gameData加入到Items列表,因为ObservableCollection没有AddRange你需要做手工的循环

+0

或者请参阅[this](http://stackoverflow.com/questions/670577/observablecollection-doesnt-support-addrange-method-so-i-get-notified-for-each) –

+0

谢谢它的作品:)。我想将oberservable集合Items绑定到我的LongListSelector,但它不起作用。在我的xaml中,我这样做:ItemsSource =“{Binding Items}”有什么想法为什么?谢谢。 – Thunder

+0

假设'DataContext'没问题,我没有看到为什么绑定不起作用的原因 – dkozl

-2

究竟你不上cannot convert from 'System.Collections.Generic.List' to 'GameFinder.GetGamesList'明白了吗?添加方法接受单个元素,而传递元素列表。您可以使用new ObservableCollection<GetGamesList>(gameData)。并在您的Linq查询结束时删除ToList语句。

+0

亲爱的Vasek,欢迎来到SO,请阅读以下链接:http://stackoverflow.com/help/how-to-answer –

+0

我明白错误信息,但我不知道如何解决它。 – Thunder