【问题标题】:observablecollection of observablecollection declarationobservablecollection 声明的 observablecollection
【发布时间】:2016-07-11 23:55:17
【问题描述】:

不知何故,这在运行时不起作用(但它正在编译):

    public static readonly DependencyProperty SelectedVideoFileNamesProperty =
    DependencyProperty.Register("SelectedVideoFileNames", typeof(ObservableCollection<ObservableCollection<string>>), typeof(CMiX_UI), 
        new PropertyMetadata(new[]{new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>()}));
    [Bindable(true)]
    public ObservableCollection<ObservableCollection<string>> SelectedVideoFileNames
    {
        get { return (ObservableCollection<ObservableCollection<string>>)this.GetValue(SelectedVideoFileNamesProperty); }
        set { this.SetValue(SelectedVideoFileNamesProperty, value); }
    }

为什么?谢谢你

【问题讨论】:

    标签: c# wpf observablecollection dependency-properties


    【解决方案1】:

    您的类型被定义为

    ObservableCollection<ObservableCollection<string>>
    

    但您将默认设置为:

    new[]{new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>()}))
    

    这是一个可观察集合的数组。你需要:

    new ObservableCollection<ObservableCollection<String()>> {new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>(),
                                   new ObservableCollection<string>()}))
    

    【讨论】:

      【解决方案2】:

      当您将字符串 ObservableCollection&lt;string&gt;[] 的 ObservableCollection 数组分配为 ObservableCollection&lt;ObservableCollection&lt;string&gt;&gt; 的默认值时,它不应该运行。如果你这样写代码:

              ObservableCollection<ObservableCollection<string>> o = new[]{new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>()};
      

      它会给你一个设计时错误,上面写着:

      无法将类型“System.Collections.ObjectModel.ObservableCollection[]”隐式转换为“System.Collections.ObjectModel.ObservableCollection>”

      相反,您可以:

              ObservableCollection<ObservableCollection<string>> o = new ObservableCollection<ObservableCollection<string>> {new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>(),
                                     new ObservableCollection<string>()};
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 1970-01-01
        • 1970-01-01
        • 2011-04-10
        相关资源
        最近更新 更多