Cosa c'è di sbagliato con questo codice? Facendo clic su button1 non viene visualizzato il messageBox.ObservableCollection Collection L'evento modificato sembra non sparare - perché?
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();
}
}
Con myClass definito:
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: Quando aggiungo un terzo pulsante con:
private void button3_Click(object sender, EventArgs e)
{
mc.myCollection.Add("a");
}
Mostrano il messageBox. E così fa button2. Ma dopo aver cliccato sul pulsante 1 - nessuno sparerà più. Come mai?
Guarda modifica. Spara in alcuni casi. – ispiro
@ispiro: esattamente. Si attiva solo quando si modifica ** l'originale ** "ObservableCollection", non dopo la sua sostituzione. – SLaks
Rendere la raccolta di sola lettura ha rivelato riassegnazioni e mi ha salvato da molti mal di testa. –