【问题标题】:Display list before filtering过滤前显示列表
【发布时间】:2021-02-21 18:50:17
【问题描述】:

我有这个代码:

   private string employee = "";
    public string Employee
    {
        get => employee;
        set
        {
            employee = value;
            Employees = db.Employees.Where(x => x.Firstname.StartsWith(Employee) || x.Lastname.StartsWith(Employee)).ToList();
            RaisePropertyChangedEvent(nameof(Employee));
        }

    }
    private List<Employee> employees = new List<Employee>();
    public List<Employee> Employees
    {
        get => employees;
        set
        {
            employees = value;
            RaisePropertyChangedEvent(nameof(Employees));
        }
    }

到目前为止,这是有效的。如果用户键入 F,则会显示以 F 开头的每个员工。如果用户从文本框中删除 F,则会显示每个 Employee,但如果用户启动应用程序,则会显示一个空列表框。当用户启动应用程序时,每个员工都应该显示在文本框中

【问题讨论】:

  • 将加载员工移动到专用方法,然后您可以控制何时加载他们。您可以将其移动到命令中,以便在更改搜索文本时调用它。或应用程序启动时。

标签: c# .net visual-studio mvvm


【解决方案1】:

使用私有变量所以替换:

        Employees = db.Employees.Where(x => x.Firstname.StartsWith(Employee) || x.Lastname.StartsWith(Employee)).ToList();

作者:

        Employees = db.Employees.Where(x => x.Firstname.StartsWith(employee) || x.Lastname.StartsWith(employee)).ToList();

【讨论】:

    【解决方案2】:

    替换

     private List<Employee> employees = new List<Employee>();
    

    用这个:

     private List<Employee> employees = db.Employees.ToList();
    

    【讨论】:

      【解决方案3】:

      在构建类时加载 所有 员工 -

      public class MyCoolViewModel
      {
          public MyCoolViewModel()
          {
              this.Employees = db.Employees.ToList();   // load all employees here
          }
          
          private string employee = "";
          public string Employee
          {
              get => employee;
              set
              {
                  employee = value;
                  Employees = db.Employees.Where(x => x.Firstname.StartsWith(Employee) || x.Lastname.StartsWith(Employee)).ToList();
                  RaisePropertyChangedEvent(nameof(Employee));
              }
      
          }
          
          private List<Employee> employees;   // removed initialization from here
          public List<Employee> Employees
          {
              get => employees;
              set
              {
                  employees = value;
                  RaisePropertyChangedEvent(nameof(Employees));
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        • 2021-05-24
        • 1970-01-01
        • 2022-06-10
        • 2014-02-07
        • 2021-06-30
        相关资源
        最近更新 更多