2012-11-25 81 views
2

对于Windows 8应用程序开发环境,“值不在预期范围内”ListView中的例外

代码:

var deserialized = JsonConvert.DeserializeObject<RootObject>(json); 
    listView.ItemsSource = deserialized; // error 

数据模型:

public class C 
    { 
     public List<Y> programs { get; set; } 
     public string name { get; set; } 
     public int code { get; set; } 
    } 
    public class RootObject 
    { 
     public List<C> cs { get; set; } 
     public string date { get; set; } 
    } 
    public class Y 
    { 
     public string category { get; set; } 
     public string time { get; set; } 
     public string name { get; set; } 
    } 

我能做些什么?我找不到解决方案。

回答

3

ItemsSource正在寻找一个IEnumerable,但你在RootObject提供一个单一的对象。如果您在代码中创建了一个RootObject实例并尝试相同的分配,则会得到相同的错误。

什么具体应该显示在列表中?如果您只是将您的代码更改为:

listView.ItemsSource = deserialized.cs; 

listView应显示您的C对象。

+0

我问,但想过,发现它! :)尽管如此,谢谢你。你的回答是真的。 – mert

0

我总是很难搞清楚如何从串行器输出中去。我确实有我在下面粘贴的工作代码(Windows 8商店)。这很明显。

   HttpResponseMessage responseGetEmailByPersonsBare = 
         await clientGetEmailByPersonsBare.PostAsync(UrlBase + EmailDetailGetEmailByPersonsBare, contentGetEmailByPersonsBare); 
        Stream myStream = await responseGetEmailByPersonsBare.Content.ReadAsStreamAsync(); 
        var djsGetEmailByPersonsBare = new DataContractJsonSerializer(typeof(AEWebDataStructures.RootObjectEmailDetail)); 

        var rootObjectEmailDetail = (AEWebDataStructures.RootObjectEmailDetail)djsGetEmailByPersonsBare.ReadObject(myStream); 
        responseGetEmailByPersonsBare.EnsureSuccessStatusCode(); 
        returnTaskInfo.EmailDetails = rootObjectEmailDetail.Data; 
        returnTaskInfo.StatusReturn = AEWebDataStructures.StatusReturn.Success; 
相关问题