列表框数据绑定不起作用

时间:2013-12-25 19:02:20

标签: c# data-binding listbox

我无法弄清楚为什么数据绑定没有按预期工作:

  • 我创建了一个Listbox并将其ItemSource设置为我的observable集合
  • 我用过.DataContext = this
  • 我初始化了我的公开Observable Collection
  • 我用实现INotifyPropertyChanged
  • 的对象填充它

然而,数据绑定仍然无效。我的列表框:

<ListBox Height="425" ItemsSource="{Binding headers}">
  <ListBox.ItemTemplate>
     <DataTemplate>
           <TextBlock Text="{Binding Path=HeaderInfo}"/>
     </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

背后的代码:

public partial class cornet_controls : PhoneApplicationPage
{
    public ObservableCollection<headerInfo> headers;

    public cornet_controls()
    {
        InitializeComponent();
        this.DataContext = this;
        headers = new ObservableCollection<headerInfo>();

        for (int x = 0; x < 100; x++)
            headers.Add((new headerInfo() { HeaderInfo = x.ToString() }));            
    }        
}

我的自定义类实现了INotifyPropertyChanged:

public class headerInfo : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public headerInfo()
    {}

    private String _HeaderInfo;

    public String HeaderInfo
    {
        get { return _HeaderInfo; }
        set { _HeaderInfo = value; NotifyPropertyChanged("HeaderInfo"); }
    }

    private void NotifyPropertyChanged(String propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

1 个答案:

答案 0 :(得分:4)

您无法绑定到NonProperty:

<ListBox Height="425" ItemsSource="{Binding headers}">

public ObservableCollection<headerInfo> headers;

您需要绑定到以下属性:

public ObservableCollection<headerInfo> headers { get; set; }