![](/img/trans.png)
[英]CollectionChanged Event is not firing on a static ObservableCollection
[英]ObservableCollection CollectionChanged event seems not to be firing – why?
這段代碼出了什么問題? 單擊button1不會導致出現messageBox。
public partial class Form1 : Form
{
public ObservableCollection<string> aCollection2 = new ObservableCollection<string>();
myClass mc = new myClass();
public Form1()
{
InitializeComponent();
aCollection2.Add("a");
aCollection2.Add("b");
}
private void button1_Click(object sender, EventArgs e)
{
mc.myCollection = aCollection2;
}
private void button2_Click(object sender, EventArgs e)
{
mc.myCollection.Clear();
}
}
使用myClass定義:
class myClass
{
public ObservableCollection<string> myCollection = new ObservableCollection<string>();
public myClass()
{
myCollection.CollectionChanged += Changed;
}
void Changed(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
MessageBox.Show(myCollection.Count.ToString());
}
}
編輯:當我添加第3個按鈕時:
private void button3_Click(object sender, EventArgs e)
{
mc.myCollection.Add("a");
}
它確實顯示了messageBox。 button2也是如此。 但點擊button1后 - 沒有人會再點火了。 怎么會?
您從字段初始值設定項向原始ObservableCollection
實例添加了一個事件處理程序。
您從未向表單中的新ObservableCollection
實例添加事件處理程序。
由於原始的ObservableCollection
永遠不會更改,因此您的處理程序永遠不會運行。
這是集合屬性應該只讀的眾多原因之一( 它們應該是屬性,而不是字段 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.