【发布时间】:2014-07-03 05:36:35
【问题描述】:
(对不起,如果标题这么麻烦,我觉得很困惑。)
我在一个对象中迭代(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, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes' 的引用。
在 ERROR 1 上,我尝试同时使用 for 和 foreach,但结果相同。
错误 2
运算符“
错误 3
无法将带有 [] 的索引应用于“System.Collections.ObjectModel.ObservableCollection`1”类型的表达式
错误 4
无法将带有 [] 的索引应用于“System.Collections.ObjectModel.ObservableCollection`1”类型的表达式
我也添加了System.Windows,但没有帮助。
有什么想法吗?谢谢。
【问题讨论】:
-
两个类是否在同一个程序集中?您的目标是哪个 .NET 框架? (如果 .NET framework
-
NotationGroup在类库中。而且它们都是.NET Framework 4.5
标签: c# wpf mvvm observablecollection portable-class-library