Có gì sai với mã này? Nhấp vào button1 không làm cho MessageBox xuất hiện.Bộ sưu tập sưu tập sưu tập có thể quan sátĐối với sự kiện có vẻ không được kích hoạt - tại sao?
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();
}
}
Với myClass định nghĩa:
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());
}
}
EDIT: Khi tôi thêm một nút thứ 3 với:
private void button3_Click(object sender, EventArgs e)
{
mc.myCollection.Add("a");
}
nó thể hiện messageBox. Và nút 2 cũng vậy. Nhưng sau khi nhấp vào button1 - không ai sẽ kích hoạt nữa. Làm thế nào mà?
Xem chỉnh sửa. Nó cháy trong một số trường hợp. – ispiro
@ispiro: Chính xác. Nó chỉ kích hoạt khi bạn sửa đổi ** original ** 'ObservableCollection', chứ không phải sau khi bạn thay thế nó. – SLaks
Làm cho bộ sưu tập chỉ được tiết lộ chỉ định lại và lưu tôi khỏi rất nhiều đau đầu. –