代码之家  ›  专栏  ›  技术社区  ›  RKh

在list<model>中编辑一行并刷新listview

  •  0
  • RKh  · 技术社区  · 7 年前

    我有一个模型如下:

    public class Customers
    {
        public int CustomerId {get; set;}
        public string CustomerName {get; set;}
        public decimal Sales {get; set;}
    }
    

    在视图模型中,我有一个属性,如下所示:

    public List<Customers> CustomerList
    {
       get => _customerList;
    
       set 
       {
           if (_customerList != value)
           {
               _customerList == value;
               OnPropertyChanged;
           } 
       }
    }
    

    在customer.xaml中,我有一个包含网格的ListView。此ListView与上面提到的CustomerList属性有绑定。

    这里我有两个问题:

    在同一个XAML中,我有一个包含入口控件的弹出代码。当我单击保存按钮时,ViewModel中会触发一个方法,该方法必须在客户模型中添加一个项目并刷新网格。

    其次,如果列表中已经存在特定的customerid,那么我必须更新模型中的销售数字。

    我尝试了如下的ViewModel保存方法:

    Customers customer = new Customers();
    customer.Id = "499";
    customer.Name = "Sample Customer";
    customer.Sale = 2000;
    
    List<Customers> list = new List<Customers>();
    list.items.Add(customer);
    

    尽管上面的值应该来自条目控制,但是我硬编码进行测试。

    当我这样做时,该项既不添加到列表中,也不刷新网格。可能是因为它是一个新实例。其次,如何编辑列表中的一行。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gerald Versluis    7 年前

    ObservableCollection ItemsSource ListView

    public class YourViewModel
    {
        public ObservableCollection<Customer> CustomersList = new ObservableCollection<Customer> { get; set; }
    
        public void UpdateCustomers(IEnumerable<Customers> newCustomers)
        {
            CustomersList.Clear();
    
            foreach (var customer in newCustomers)
                CustomersList.Add(customer);
        }
    }
    

    List INotifyPropertyChanged

    Customer