在我的应用程序中,我有一个数据网格,它具有 ItemsSource ObservableCollection< Carrello >。
<Grid x:Name="DatiCarrello">
<DataGrid Name="carrello" RowStyle="{StaticResource RowStyleWithAlternation}" AlternationCount="2" AutoGenerateColumns="False" Margin="40,95,250,30">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Path=ID_prodotto}" />
<DataGridTextColumn Header="Descrizione" Binding="{Binding Path=Descrizione}" Width="100"/>
[...]
</DataGrid.Columns>
</DataGrid>
</Grid>
我的班卡雷洛:
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
namespace WpfApplication1.Classi
{
class Carrello
{
public string ID_prodotto { get; set; }
public string Descrizione { get; set; }
public double Prezzo { get; set; }
public int Quantita { get; set; }
public int Sconto { get; set; }
public int Quantita_massima { get; set; }
private static ObservableCollection<Carrello> ProdottiInCarrello = new ObservableCollection<Carrello>();
public static void ClearElencoProdottiInCarrello()
{
ProdottiInCarrello.Clear();
}
public static ObservableCollection<Carrello> GetElencoProdottiInCarrello()
{
return ProdottiInCarrello;
}
public static void InserciProdottoInCarrello(Carrello items)
{
foreach (Carrello element in ProdottiInCarrello)
if (element.ID_prodotto == items.ID_prodotto)
{
element.Quantita += items.Quantita;
return;
}
ProdottiInCarrello.Add(items);
}
}
}
这就是我使用它的方式:
public partial class FinestraCassa : UserControl
{
private Carrello prodotto_carrello = new Carrello();
public FinestraCassa()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DatiCarrello.DataContext = prodotto_carrello;
Carrello.ClearElencoProdottiInCarrello();
carrello.ItemsSource = Carrello.GetElencoProdottiInCarrello();
}
private void qta_articolo_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
int sconto = 0;
int.TryParse(sconto_articolo.Text.Replace("%", ""), out sconto);
prodotto_carrello.Sconto = sconto;
Carrello.InserciProdottoInCarrello(prodotto_carrello);
/* Pulisco per nuovo elemento */
prodotto_carrello = new Carrello();
DatiCarrello.DataContext = prodotto_carrello;
TextBoxSearch.Focus();
}
}
}
对于我插入的每个新产品,DataGrid 都会得到适当的通知,并在其中显示新行。问题是当我插入相同的产品时,它应该只更新数量(如果它已经在列表中)。有效数量已更新,但不会立即执行刷新,但我必须在单元格“数量”内单击才能看到更改。
我应该实现INotifyPropertyChanged,但我不明白如何......