Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 由于枚举原因,添加到ObservableCollection会引发InvalidopeException_C#_Wpf_Xaml_Exception_Binding - Fatal编程技术网

C# 由于枚举原因,添加到ObservableCollection会引发InvalidopeException

C# 由于枚举原因,添加到ObservableCollection会引发InvalidopeException,c#,wpf,xaml,exception,binding,C#,Wpf,Xaml,Exception,Binding,以下代码在将第一项添加到ObservableCollection时引发InvalidOperationException 我得到的例外是典型的 InvalidOperationException: Collection was modified; enumeration operation may not execute. …只有一个堆栈跟踪条目 当我添加项目时,WPF是否正在访问我的列表?为什么会出现异常?更改此设置 private void FillRadios() { _radi

以下代码在将第一项添加到ObservableCollection时引发InvalidOperationException

我得到的例外是典型的

InvalidOperationException: Collection was modified; enumeration operation may not execute.
…只有一个堆栈跟踪条目

当我添加项目时,WPF是否正在访问我的列表?为什么会出现异常?

更改此设置

private void FillRadios()
{
    _radios.Clear();

    foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
    {
        RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
        _radios.Add(viewItem); // exception is thrown here
    }
}
对此

private void FillRadios()
    {
        _radios = new ObservableCollection<RadioViewItem>();

        foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
        {
            RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
            _radios.Add(viewItem); // exception is thrown here
        }
    }

我强烈建议使用4个空格作为选项卡,而不是3个。是否可能_state.GetRadios。。。正在通过_radios集合进行枚举吗?如果出现错误,看起来是这样的。很抱歉,我尝试了代码格式设置,但它不起作用@Dtex:no,GetRadios只枚举state类中包含的字典OK,我认为问题在于state类编辑:我错了,问题不在于_state类,我只是返回了一个新项,而不是访问state类,异常仍然发生。这是一个肮脏的修复程序,但我将尝试它,直到找到更好的解决方案,thanks@leozilla这不是一个肮脏的补丁。你搞错了Clear处理可观察集合的方式。好吧,dirty这个词有点难。我知道clear也会重置视图,但我不喜欢创建集合视图类的新实例。
InvalidOperationException: Collection was modified; enumeration operation may not execute.
private void FillRadios()
{
    _radios.Clear();

    foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
    {
        RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
        _radios.Add(viewItem); // exception is thrown here
    }
}
private void FillRadios()
    {
        _radios = new ObservableCollection<RadioViewItem>();

        foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
        {
            RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
            _radios.Add(viewItem); // exception is thrown here
        }
    }