";值不在预期范围内";Window 8 ObservableDictionary错误

本文关键字:quot Window 错误 范围内 ObservableDictionary | 更新日期: 2024-10-23 07:07:55

在异步方法中将值设置为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 生成的

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)); 

请帮帮我。

";值不在预期范围内";Window 8 ObservableDictionary错误

这个问题很老,但我遇到了同样的问题,答案可以帮助其他人。

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

我看不到您的XAML,但在我的案例中,DefaultViewModel项在<Page.Resources>部分的CollectionViewSource中有一个引用。