Wpf ligne de grille de données pas de mise à jour lorsqu'bindings de collecte mis à jour?

J'ai produit de classe nomméProduits.cs

class Products : INotifyPropertyChanged
{
private int productId = 0;
private int quantity = 0;
private string description = string.Empty;
private decimal price = 0.0m;
public event PropertyChangedEventHandler PropertyChanged;
public Products()
{
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#region Properties
public int ProductID
{
get { return this.productId; }
set
{
if (value != productId)
{
this.productId = value;
OnPropertyChanged("ProductID");
}
}
}
public int Quantity
{
get { return this.quantity; }
set
{
if (value != this.quantity)
{
this.quantity = value;
OnPropertyChanged("Quantity");
OnPropertyChanged("SubTotal");
}
}
}
public String Description
{
get { return this.description;}
set
{
if (value != this.description)
{
this.description = value;
OnPropertyChanged("Description");
}
}
}
public Decimal Price
{
get { return this.price; }
set
{
if (value != this.price)
{
this.price = value;
OnPropertyChanged("Price");
}
}
}
public Decimal SubTotal
{
get { return Quantity * Price; }
}
public static List<Products> ProductList
{
get { return new List<Products>(); }
}     
#endregion
}

Puis j'ai BilClass.cs à mettre en œuvre d'ajouter, de modifier & supprimer les éléments de la Liste.

class BillClass
{
public List<Products> ProductsList = new List<Products>();
Products products;
public BillClass()
{
AddProducts(1, 2, 20.00m, "a");            
}
public void AddProducts(int _pid, int _quantity, decimal _price, string _desc)
{
products = new Products();
products.ProductID = _pid;
products.Quantity = _quantity;
products.Price = _price;            
products.Description = _desc;
ProductsList.Add(products);
}
public bool RemoveProduct(int _id)
{
ProductsList.Remove(ProductsList.Find(e => e.ProductID.Equals(_id)));
return true;
}
public void EditProducts(int _pid, int _quantity)
{
Products ob = ProductsList.Find(e => e.ProductID.Equals(_pid));
ob.Quantity = _quantity;            
}
public List<Products> GetItems()
{
return ProductsList;
}

J'ai appliqué cette "ProductList" à wpf datagrid. Ce datagrid affiche l'élément est déjà dans la collection (l'ajout de données dans BillClass constructeur), mais ne présentant pas de nouvel élément ajouté via les ventes de la fenêtre qui contient la grille de données.

DataGrid Code XAML

<Custom:DataGrid ItemsSource="{Binding Path=ProductsList}" Margin="16,100,16,120" AutoGenerateColumns="False" x:Name="dataGrid" HorizontalGridLinesBrush="#FFD0D0D0" 
VerticalGridLinesBrush="#FFD0D0D0" CanUserDeleteRows="True" CanUserResizeRows="False" Background="White" IsTabStop="False" Focusable="False" IsReadOnly="True" CanUserSortColumns="False" CanUserResizeColumns="False" CanUserReorderColumns="False" GridLinesVisibility="Horizontal" EnableRowVirtualization="False">
<Custom:DataGrid.Columns>
<Custom:DataGridTextColumn Binding="{Binding Path=ProductID}" Header="Sl" Width="40" IsReadOnly="True" CanUserSort="False" CanUserResize="False" CanUserReorder="False" />
<Custom:DataGridTextColumn Binding="{Binding Path=ProductID}" Header="Product Code" Width="100" IsReadOnly="True" CanUserSort="False" CanUserResize="False" CanUserReorder="False" />
<Custom:DataGridTextColumn Binding="{Binding Path=Description}" Header="Description" Width="250" IsReadOnly="True" CanUserSort="False" CanUserResize="False" CanUserReorder="False" />
<Custom:DataGridTextColumn Binding="{Binding Path=Price}" Header="Unit Price (in Rs.)" Width="120" IsReadOnly="True" CanUserSort="False" CanUserResize="False" CanUserReorder="False" />
<Custom:DataGridTextColumn Binding="{Binding Path=Quantity}" Header="Quantity" Width="120" IsReadOnly="True" CanUserSort="False" CanUserResize="False" CanUserReorder="False" />
<Custom:DataGridTextColumn Binding="{Binding Path=SubTotal, Mode=OneWay}" Header="Total (in Rs.)" Width="120" IsReadOnly="True" CanUserSort="False" CanUserResize="False" CanUserReorder="False" />                                         
</Custom:DataGrid.Columns>                      
</Custom:DataGrid>

Du code aidera

grâce

Qu'entendez-vous par "mais ne présentant pas de nouvel élément ajouté via les ventes de la fenêtre qui contient la grille de données". Êtes-vous le remplissage de la liste des produits de la grille à partir une autre fenêtre? si oui, Comment vous le faire?

OriginalL'auteur Rajkishor Sahu | 2010-05-31