2010-09-13 122 views
1

我有這個問題,當我運行應用程序時,我看到項目「紅色」,「藍色」,「黃色」的列表框。但是,當我鍵入「黑色」textBox1並按Button1項目不添加。任何想法爲什麼?WPF列表框 - 數據綁定問題

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); 
    } 
} 

回答

3

你應該用一個ObservableCollection更換的ArrayList <串>這將當其內容發生變化時與ListBox通信。

+0

優秀的答案,完美的作品,謝謝+++ – markoniuss 2010-09-13 08:27:59

0

這是因爲視圖(本例中的列表框)沒有通知有關更改。

您應該實現INotifyProperyChanged或者乾脆復位的ItemsSource:

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

(雖然使用OnPropertyChanged可以肯定的是更好的做法)

+0

我認爲重新分配ItemSource將有所幫助,但對我的經驗來說,這並不像預期的那樣工作。 – markoniuss 2010-09-13 08:27:16