2016-03-24 3 views
0

Так или иначе, это не работает во время выполнения (но компиляции):ObservableCollection декларации ObservableCollection

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

Почему? спасибо

ответ

1

Он не должен быть запущен как вы назначаете массив ObservableCollection строки ObservableCollection<string>[] быть значение по умолчанию для ObservableCollection<ObservableCollection<string>>. Если вы пишете код так:

 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>()}; 
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>()})) 
Смежные вопросы