Datagrid到ObservableCollection绑定不更新网格

时间:2012-03-21 12:17:46

标签: c# wpf binding grid observablecollection

请帮助我,我不知道什么是错的。无论我尝试什么,网格都不会更新(保持空白)。

我希望将网格绑定到ObservableCollection,但不要生成自动cloumns,而是从名为Product的对象中选择两个属性,这是此Collection所拥有的类型。

XAML:

 <DataGrid  x:Name="itemsGrid" ItemsSource="{Binding OrdersList}" AutoGenerateColumns="False" Style="{StaticResource GridStyle}">
     <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=Product.Amount}" Header="AMOUTN" />
        <DataGridTextColumn Binding="{Binding Path=Product.Name}" Header="NAME"  />
     </DataGrid.Columns>
</DataGrid >

CODE:

  public partial class Orders : Window,INotifyPropertyChanged
    {

      ObservableCollection<Product> _ordersList = new ObservableCollection<Product>();
      public event PropertyChangedEventHandler PropertyChanged;

      private ObservableCollection<Product> OrdersList
    {
        get { return this._ordersList; }

        set { _ordersList = value; NotifyPropertyChanged("OrdersList"); }
    }

    private void addProduct(Product p)
    {
        OrdersList.Add(p);
        NotifyPropertyChanged("OrdersList");
    }
    private void removeProduct(Product p)
    {
        OrdersList.Remove(p);
        NotifyPropertyChanged("OrdersList");
    }

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

}

2 个答案:

答案 0 :(得分:2)

我认为您只需要从绑定中删除Product.一词。每个DataContext的{​​{1}}是DataGridRow类型的对象,因此您的绑定应指向Product上的属性

Product

答案 1 :(得分:0)

您需要在某处设置this.DataContext = this;。最好在窗口的Load事件中完成。