我在通用代码中发现了错误,但是我不知道在哪里出错。看来我的大脑也有堆栈溢出:-)。 这是堆栈溢出来自的代码:
public ObservableCollection<TestStep> TestSteps
{
get { return TestSteps; }
set { TestSteps = value; }
}
答案 0 :(得分:4)
该属性需要一个后备字段:
private ObservableCollection<TestStep> testSteps;
public ObservableCollection<TestStep> TestSteps
{
get { return testSteps; }
set { testSteps = value; }
}
或者您使用自动实现的属性:
public ObservableCollection<TestStep> TestSteps { get; set; }
由于通常只创建一次ObservableCollections,以后仅添加或删除项,因此该属性应为只读并初始化:
public ObservableCollection<TestStep> TestSteps { get; }
= new ObservableCollection<TestStep>();
如果确实需要设置它,并且由于它似乎是视图模型中的属性,则应在其设置器中触发属性更改通知,例如INotifyPropertyChanged接口的PropertyChanged事件:
private ObservableCollection<TestStep> testSteps;
public ObservableCollection<TestStep> TestSteps
{
get { return testSteps; }
set
{
testSteps = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TestSteps)));
}
}
答案 1 :(得分:-1)
该属性的getter和setter都以递归方式调用自己。