2010-09-13 7 views
1

J'ai ce problème, quand je cours l'application je vois la liste avec les articles "rouge", "bleu", "jaune". Mais quand je tape "black" à textBox1 et appuyez sur Button1 article n'est pas ajouté. Une idée pourquoi?WPF Listbox - problème de liaison de données

public partial class Window1 : Window 
{ 
    private static ArrayList myItems = new ArrayList(); 
    public Window1() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     listBox1.ItemsSource = myItems; 
     myItems.Add("red"); 
     myItems.Add("blue"); 
     myItems.Add("yellow"); 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     myItems.Add(textBox1.Text); 
    } 
} 

Répondre

3

Vous devez remplacer le ArrayList avec un ObservableCollection < chaîne > qui sera communiquer à la ListBox lorsque son contenu change.

+0

Excellente réponse, fonctionne parfaitement, Merci +++ – markoniuss

0

En effet, la vue (la zone de liste dans ce cas) n'est pas informé au sujet du changement.

Vous devez soit mettre en œuvre INotifyProperyChanged ou simplement réinitialiser le ItemsSource:

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    myItems.Add(textBox1.Text); 
    // refresh: 
    listBox1.ItemsSource = myItems; 
} 

(. Bien que l'utilisation OnPropertyChanged est une meilleure pratique pour sûr)

+0

Je pensais que la réaffectation ItemSource va aider, mais à mon expérience, cela ne fonctionne pas comme prévu. – markoniuss