(Извините, если название доставляет столько хлопот, я чувствую себя довольно запутанным, чтобы дать ему название.)
У меня проблема с итерацией (либо for
, либо foreach
) объекта ObservableCollection
в объекте, который помещен в другой ObservableCollection
.
ЭТО МОЙ КЛАСС "ОБЪЕКТ" (в переносимой библиотеке классов)
public class NotationGroup : INotifyPropertyChanged
{
...
private ObservableCollection<Notation> _notations;
...
public ObservableCollection<Notation> Notations
{
get { return _notations; }
set { _notations = value; NotifyPropertyChanged("Notations"); }
}
...
}
И ВОТ КАК Я ПОЛУЧИЛ ЕГО ДОСТУП
public class MainWindowModelView : INotifyPropertyChanged
{
...
private ObservableCollection<NotationGroup> _notationGroups;
....
public ObservableCollection<NotationGroup> NotationGroups
{ get { return _notationGroups; } set { _notationGroups = value; NotifyPropertyChanged("NotationGroups"); } }
...
public void AddOrUpdateNote(Notes note, ModifierKeys mKeys)
{
if (mKeys == ModifierKeys.Control)
{
foreach (NotationGroup item in NotationGroups)
{
for (int i = 0; i < item.Notations.Count; i++) //ERROR 1
{
if (item.Notations[i].IsSelected) //ERROR 2
{
item.Notations[i].Note = note; //ERROR 3
}
}
}
}
else
{
if (NotationGroups.Count(x => x.IsSelected) > 1)
{
var selectedNG = NotationGroups.FirstOrDefault(x => x.IsSelected);
ClearSelected();
(selectedNG as NotationGroup).Notations[0].IsSelected = true; //ERROR 4
}
...
}
}
}
(НЕКОТОРЫЕ КОДЫ ОБРЕЗАНЫ ДЛЯ ЯСНОСТИ)
Это сообщения об ошибках:
ОШИБКА 1
Тип «System.Collections.ObjectModel.ObservableCollection`1» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «System.Windows, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes».
При ОШИБКЕ 1 я пытался использовать как for
, так и foreach
, но это одно и то же.
ОШИБКА 2
Оператор «‹» нельзя применять к операндам типа «int» и «группа методов».
ОШИБКА 3
Невозможно применить индексирование с [] к выражению типа «System.Collections.ObjectModel.ObservableCollection`1»
ОШИБКА 4
Невозможно применить индексирование с [] к выражению типа «System.Collections.ObjectModel.ObservableCollection`1»
Я тоже добавил System.Windows
, но это не помогло.
Есть идеи? Спасибо.
NotationGroup
находится в библиотеке классов. И оба они .NET Framework 4.5. - person Moses Aprico   schedule 03.07.2014