5
有什么不对的代码?单击button1不会导致消息框出现。的ObservableCollection CollectionChanged事件似乎并没有被解雇 - 为什么?
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());
}
}
编辑: 当我添加第三个按钮有:
private void button3_Click(object sender, EventArgs e)
{
mc.myCollection.Add("a");
}
它显示在MessageBox。 button2也是如此。但是在点击按钮1之后 - 没有人会再开火了。怎么来的?
见编辑之一。它在某些情况下会引发火灾。 – ispiro
@ispiro:没错。只有当你修改** **原来'ObservableCollection',则在更换后不火。 – SLaks
使集合只读显示重新分配,并从很多头痛救了我。 –