Co jest nie tak z tym kodem? Kliknięcie przycisku 1 nie powoduje pojawienia się komunikatu.ObservableCollection Collection Wydarzenie, które się zmieniło, wydaje się nie uruchamiać - dlaczego?
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();
}
}
Z myClass zdefiniowane:
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: Kiedy dodać 3rd przycisk z:
private void button3_Click(object sender, EventArgs e)
{
mc.myCollection.Add("a");
}
To ma pokazać MessageBox. Podobnie jak przycisk 2. Ale po kliknięciu przycisku 1 - żaden nie będzie już strzelał. Dlaczego?
Zobacz zmienił. W niektórych przypadkach jest uruchamiany. – ispiro
@ispiro: Dokładnie. Występuje tylko wtedy, gdy modyfikujesz ** oryginalny "ObservableCollection", a nie po jego zastąpieniu. – SLaks
Uczynienie kolekcji tylko do odczytu odsłoniło i uratowało mnie od wielu bólów głowy. –