2016-03-24 18 views
0

Irgendwie dies funktioniert nicht zur Laufzeit (aber es kompiliert):ObservableCollection von ObservableCollection Erklärung

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

Warum? danke

Antwort

1

Es ist nicht in Betrieb sein sollte, wie Sie eine Reihe von ObservableCollection von Zeichenfolge zuweisen ObservableCollection<string>[] der Standardwert für eine ObservableCollection<ObservableCollection<string>> zu sein. Wenn Sie Ihren Code wie folgt schreiben:

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

Es wird Ihnen eine Entwurfszeitfehler, der sagt:

nicht implizit Typ konvertieren kann ‚System.Collections.ObjectModel.ObservableCollection []‘ in " System.Collections.ObjectModel.ObservableCollection>‘

Stattdessen können Sie:

 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>()}; 
1

ist Ihre Art als

ObservableCollection<ObservableCollection<string>> 

definiert Doch Sie die Standardeinstellung Einstellung als:

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

die eine Reihe von beobachtbaren Sammlungen. Sie benötigen:

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