C#无法将项目添加到观察的集合
我有哪里我尝试我的项目添加到我的观察到的集合问题,但我得到这个错误: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; }
}
尝试
foreach (var item in gameData) Items.Add(item)
gameData
是List<GetGamesList>
所以你需要的每个项目gameData
加入到Items
列表,因为ObservableCollection
没有AddRange
你需要做手工的循环
究竟你不上cannot convert from 'System.Collections.Generic.List' to 'GameFinder.GetGamesList'
明白了吗?添加方法接受单个元素,而传递元素列表。您可以使用new ObservableCollection<GetGamesList>(gameData)
。并在您的Linq查询结束时删除ToList
语句。
亲爱的Vasek,欢迎来到SO,请阅读以下链接:http://stackoverflow.com/help/how-to-answer –
我明白错误信息,但我不知道如何解决它。 – Thunder
或者请参阅[this](http://stackoverflow.com/questions/670577/observablecollection-doesnt-support-addrange-method-so-i-get-notified-for-each) –
谢谢它的作品:)。我想将oberservable集合Items绑定到我的LongListSelector,但它不起作用。在我的xaml中,我这样做:ItemsSource =“{Binding Items}”有什么想法为什么?谢谢。 – Thunder
假设'DataContext'没问题,我没有看到为什么绑定不起作用的原因 – dkozl