2013-03-28 4 views
0

У меня есть WPF DataGrid, как показано ниже:Реферирование ячейку в WPF DataGrid

Мои вопросы:

  1. Как выполнить вычисление в столбце «общего», основанный на Цена * Количество?
  2. Есть ли способ автоматической регулировки ширины столбца таблицы, чтобы он выглядел лучше?

Мой CS код выглядит следующим образом:

public partial class pgCheckout : Page { 

    ObservableCollection<SaleItem> items = new ObservableCollection<SaleItem>(); 

    public pgCheckout() { 
     InitializeComponent(); 
     dgItems.ItemsSource = items; 
    } 

    private void btnRemove_Click(object sender, RoutedEventArgs e) { 

    } 

    private void btnAdd_Click(object sender, RoutedEventArgs e) { 
     using (var db = new PoSEntities()) { 
      var query = from i in db.Items 
         where i.ItemID.Equals(txtItemID.Text.Trim()) 
         select i; 
      var itm = query.FirstOrDefault(); 
      if (itm == null) { 
       lblErr.Content = "Invalid Item"; 
      } 
      else { 
       lblErr.Content = ""; 
       items.Add(new SaleItem() { 
        Num = items.Count + 1, 
        ItemID = itm.ItemID, 
        Name = itm.Name, 
        Price = itm.Price, 
        Quantity = 1, 
        Total = 1 //Need to be Price * Quantity 
       }); 
      } 
     } 
    } 
} 

class SaleItem { 
    public int Num { get; set; } 
    public string ItemID { get; set; } 
    public string Name { get; set; } 
    public decimal Price { get; set; } 
    public int Quantity { get; set; } 
    public decimal Total { get; set; } 
} 

Спасибо заранее.

ответ

1

Вам нужно будет ipmlement INotifyPropertyChanged интерфейс для вашей модели, как этот

class SaleItem : INotifyPropertyChanged 
{ 
    public int Num { get; set; } 
    public string ItemID { get; set; } 
    public string Name { get; set; } 

    private decimal price; 
    public decimal Price 
    { 
     get { return price; } 
     set 
     { 
      this.price = value; 
      OnPropertyChanged("Total"); 
     } 
    } 

    private decimal quantity; 
    public decimal Quantity 
    { 
     get { return quantity; } 
     set 
     { 
      this.quantity = value; 
      OnPropertyChanged("Total"); 
     } 
    } 

    public decimal Total 
    { 
     get { return Price * Quantity; } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void OnPropertyChanged(string propertyName) 
    { 
     var handler = PropertyChanged; 
     if (handler != null) 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 
+0

Спасибо так много! Это сработало! – Edwin

Смежные вопросы