2014-12-03 61 views
0

我想向List(通過按鈕)添加一些字符串並將其顯示在ItemsSource中,但它不起作用。這就是我的代碼:如何將列表綁定到ItemsControl中的文本框

XAML:

<ItemsControl ItemsSource="{Binding ListInfos, Mode=OneWay}"> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <Grid> 
      <TextBox Text="{Binding Path=., Mode=OneWay}" /> 
      ... 

視圖模型:

private List<String> _listInfos = new List<String>(); 

public List<String> ListInfos 
{ 
    get { return _listInfos; } 
    set 
    { 
     _listInfos = value; 
     NotifyPropertyChanged("ListInfos"); 
    } 
} 

public void AddStringButton() 
{ 
    ListInfos.Add("test"); 
} 

的AddStringButton方法可行,但ListInfos的屬性(集)不火,並模具GUI不顯示字符串測試。

+4

使用'ObservableCollection '而不是'列表' – dkozl 2014-12-03 12:29:47

+0

@dkozl太棒了,謝謝 – Maddy 2014-12-03 12:32:51

回答

1

正如dkozl所說,您需要使用ObservableCollection類,它在列表內容發生更改時提供通知。 List PropertyChanged事件觸發的唯一方法是將其設置爲新的列表實例。

+0

編輯:刪除了OP評論的錯誤。問題是: 還有一個問題。我需要一個帶有Key和Value的ObservableCollection,你知道我應該使用哪個元素嗎? 我想不出任何內建在.NET中的東西可以做你正在尋找的東西,所以你需要建立一個定製類來照顧它。 爲什麼你需要在集合中的項目上的鑰匙是否有特定的原因?它將使綁定到屬性更加困難。 – user2920518 2014-12-03 18:03:47