“价值不在预期范围内。” Window 8 ObservableDictionary错误

时间:2013-12-16 16:28:54

标签: c# wpf windows-8

在异步方法中将值设置为DefaultViewModel时出现错误

    async void SpotlightVideo_FadeIn_Completed(object sender, object e)
    {
        this.DefaultViewModel["SpotlightImageSource"] = (await ExtensionMethods.GetSingleImage(1, SpotlightVideo.Image)).Source;
        Spotlight_Videos s = this.DefaultViewModel["SpotlightVideos"] as Spotlight_Videos;
        //s.Discription = SpotlightVideo.Discription;
        //s.Image = SpotlightVideo.Image;
        //s.Video_Id = SpotlightVideo.Video_Id;
        //s.Video_Name = SpotlightVideo.Video_Name;
        //s.VideoPath = SpotlightVideo.VideoPath;

        this.DefaultViewModel["SpotlightVideos"] = SpotlightVideo;
        //s = SpotlightVideo;

        SpotlightVideo_FadeOut.Begin();
    }

mehtod中的第一行运行良好DefaultViewModel["SpotlightImageSource"] 但是this.DefaultViewModel["SpotlightVideos"] = SpotlightVideo; 给我错误:

  

“价值不在预期范围内。”

但是当我将值设置为单个属性时,它运行正常而没有错误。

当我将整个对象传递给s变量时,它运行时没有错误,但没有按预期给出结果。

我使用ObservableDictionary.cs生成了错误代码和basicallty

private void InvokeMapChanged(CollectionChange change, string key)
    {
        var eventHandler = MapChanged;
        if (eventHandler != null)
        {
            eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key));
        }
    }

错误行是:

eventHandler(this, new ObservableDictionaryChangedEventArgs(change, key)); 

请帮帮我。

1 个答案:

答案 0 :(得分:0)

问题已经很久了,但我遇到了同样的问题,答案可以帮助其他人。

这是因为你的对象this.DefaultViewModel["SpotlightVideos"]期望一个集合,但你给它一个对象。

我没有看到您的XAML,但在我的情况下,DefaultViewModel项在CollectionViewSource部分的<Page.Resources>中有引用。