2014-12-03 67 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

相关问题