Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF数据网格中引用单元格_C#_Wpf_Wpfdatagrid - Fatal编程技术网

C# 在WPF数据网格中引用单元格

C# 在WPF数据网格中引用单元格,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,我有一个WPF数据网格,如下所示: 我的问题是: 如何根据价格*数量计算“总计”列 是否有一种方法可以自动调整表格的列宽,使其看起来更美观 我的cs代码如下: public partial class pgCheckout : Page { ObservableCollection<SaleItem> items = new ObservableCollection<SaleItem>(); public pgCheckout() {

我有一个WPF数据网格,如下所示:

我的问题是:

  • 如何根据价格*数量计算“总计”列
  • 是否有一种方法可以自动调整表格的列宽,使其看起来更美观
  • 我的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; }
    }
    
    公共部分类签出:第页{
    ObservableCollection items=新的ObservableCollection();
    公共签出(){
    初始化组件();
    dgItems.ItemsSource=项目;
    }
    私有void btnRemove_单击(对象发送者,路由目标){
    }
    私有无效btnAdd_单击(对象发送者,路由目标e){
    使用(var db=new PoSEntities()){
    var query=来自db.Items中的i
    其中i.ItemID.Equals(txtItemID.Text.Trim())
    选择i;
    var itm=query.FirstOrDefault();
    如果(itm==null){
    lblErr.Content=“无效项”;
    }
    否则{
    lblErr.Content=“”;
    items.Add(新的SaleItem(){
    Num=items.Count+1,
    ItemID=itm.ItemID,
    Name=itm.Name,
    价格=itm.价格,
    数量=1,
    总计=1//需要为价格*数量
    });
    }
    }
    }
    }
    类别销售项目{
    公共int Num{get;set;}
    公共字符串ItemID{get;set;}
    公共字符串名称{get;set;}
    公共十进制价格{get;set;}
    公共整数数量{get;set;}
    公共十进制总数{get;set;}
    }
    

    提前感谢。

    您需要像这样为您的模型安装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));
        }
    }