我正在Silverlight上工作。我创建了一个TextBox,当用户改变任何文本时,它应该在文件的顶部显示“*”,并在点击保存按钮时应该消失。为什么构造函数调用多次?
我的代码对一个文本框工作正常,但当我创建第二个文本框(第一个之后),然后我发现构造函数被调用两次而不是一个。当我创建第三个文本框(两个之后)构造函数被调用3次而不是一个。 (这个文本框是在我的GUI中的一个按钮上单击动态创建的,其中有一些文本写在它上面,当我在文本中进行一些更改时,它会在顶部显示“*”,并在保存时会消失)。
虽然我希望它被调用1次,如果我一次添加1个文本框。 我的代码,这样做是:
private bool modified;
public bool Modified
{
get { return modified; }
set { modified = value; OnPropertyChanged("Modified"); }
}
public ClassConstructor(AnotherClass pv)
{
MessageBox.Show("Number of call check");
setStar(false);
this.isModified = false;
}
private void setStar(bool modified)
{
Tab = this.FileName;
if (modified == false)
{
Tab += "";
}
else
{
Tab += " *";
}
Modified = modified;
}
public void TextChanged(object sender, TextChangedEventArgs e)
{
TextBox tb = (TextBox) sender;
setStar(!TextData.Equals(tb.Text));
}
public void SaveCode(object para)
{
TextData.txt = txt;
setStar(false);
}
为什么这个构造函数被调用这么多次?(我的意思是为什么我的MessageBox的时间,如果我创建第四个文本框)?
'DelegateCommand'类的构造函数它有什么作用?我怀疑你没有从代表中移除方法 – Arjuna
看来问题出在代码的其他部分。 – Stilgar
@Arjuna委托命令用于动态保存文本框中所做的更改,而取消取消文本框。 – Sss