isp*_*iro 5 c# .net-4.0 observablecollection
这段代码出了什么问题?单击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();
}
}
Run Code Online (Sandbox Code Playgroud)
使用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());
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:当我添加第3个按钮时:
private void button3_Click(object sender, EventArgs e)
{
mc.myCollection.Add("a");
}
Run Code Online (Sandbox Code Playgroud)
它确实显示了messageBox.button2也是如此.但点击button1后 - 没有人会再点火了.怎么会?
SLa*_*aks 10
您ObservableCollection从字段初始值设定项向原始实例添加了事件处理程序.
您从未向ObservableCollection表单中的新实例添加事件处理程序.
由于原始版本ObservableCollection永远不会更改,因此您的处理程
这是集合属性应该只读的众多原因之一(它们应该是属性,而不是字段)
| 归档时间: |
|
| 查看次数: |
5390 次 |
| 最近记录: |