我正在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