1
我找到了解决我的问题的方法,但我想知道是否有人可以解释为什么会发生这种情况。List <T>修改ObservableCollection <T>当列表<T>索引项目发生变化时
我有一个类DataCollector。
public class DataCollector
{
public string Name { get; set; }
public string Group { get; set; }
public int Count { get; set; }
public Brush Color { get; private set; }
public DataCollector(string name, string group, int count, Brush color)
{
Name = name;
Group = group;
Count = count;
Color = color;
}
}
在我的代码中,我有一个DataCollector的ObservableCollection。
public ObservableCollection<DataCollector> dataGrid { get; set; }
我收集我的数据并使用它,直到当我去添加更多功能的代码。
我想通过“dataGrid”并列出组并列出所有名称的总数。
List<DataCollector> dataCollector = new List<DataCollector>();
List<string> _groupNames = new List<string>();
foreach (DataCollector dc in dataGrid)
{
int cnt = 0, index = 0;
bool groupFound = false;
if (dataCollector.Count == 0)
{
_groupNames.Add(dc.Group);
dataCollector.Add(dc));
}
else
{
foreach (string groupNames in _groupNames)
{
if (groupNames == dc.Group)
{
index = cnt;
nameFound = true;
}
cnt++;
}
if (nameFound)
{
// When I do this my dataGrid.Count increments, too
dataCollector[index].Count += dc.Count;
}
else
{
_groupNames.Add(dc.Group);
dataCollector.Add(dc);
}
}
}
为了解决这个问题,我改变
dataCollector.Add(dc);
到
dataCollector.Add(new DataCollector(dc.Name, dc.Group, dc.Count, dc.Color));
为什么我要这样?将“dc”添加到“dataCollector”是否创建到“dataGrid”的链接?如果这样做没有意义。
打败我吧。 +1 – Arrow
@JamesKent对不起大声笑:P –
大声笑,道歉接受! :P – Arrow