【发布时间】:2019-04-24 12:15:37
【问题描述】:
在我的 WPF 应用程序中,我有一个 Functions 的 Observable 集合
private ObservableCollection<Function> functions = new ObservableCollection<Function>();
我为按钮编写了一个命令,用于向集合中添加新功能: 在这种情况下,我添加了一个多项式函数。
public ICommand AddPolyFuncCommand
{
get
{
return new Command(obj =>
{
Function newPolyFunc = new PolyFunction(this.Coefficients);
functions.Add(newPolyFunc);
CalculatePoints();
});
}
}
但是,如果我继续添加更多功能,集合中的所有最新功能都会被我要添加的功能覆盖。例如我有 3 个条目,但功能都是一样的(它们应该是不同的)。
例如,我创建了第一个函数。之后,我想向集合中添加另一个不同的功能。
它让我可以正确创建“newPolyFunc”,但如果我在运行时查看FunctionsCollection,第一个值已经被该函数覆盖。
public ICommand AddTrigoFuncCommand
{
get
{
return new Command(obj =>
{
this.functions.Add(newTrigoFunc);
CalculatePoints();
});
}
}
【问题讨论】:
-
也许这只是一个错字,但你的代码应该是函数。Add(newPolyFunc)
-
那没有解决。
-
我认为不会,但您的代码 sn-p 在语法上不正确 - 只是指出这一点
-
还有一些其他代码导致了问题,您需要花一些时间调试与您的收藏交互的所有部分。
-
假设
this.Coefficients是一个ObservableCollection,你给新的Function一个对Coefficients的引用。您可能想要传递深层副本而不是像ObservableCollection<double> newCoefficients = new ObservableCollection<double>(Coefficients.Select(c => c));这样的引用