1

这是我的代码

    public MainPage()
    {
        mytb.Add(dp1);
        mytb.Add(dp2);
        mytb.Add(dp3);
        mytb.Add(dp4);          
        InitializeComponent();
        this.BindingContext = this;
       
    }     
    public static List<Departments> mytb { get; set; } = new List<Departments>();   

    public ObservableCollection<Departments> mytb2 { get; set; } = new ObservableCollection<Departments>(mytb);     

    Departments dp1 = new Departments() { FullName = "kkkkkk" };
    Departments dp2 = new Departments() { FullName = "kkkkkk" };
    Departments dp3 = new Departments() { FullName = "kkkkkk" };
    Departments dp4 = new Departments() { FullName = "kkkkkk" };

当我将我的 ListView ItemSource 绑定到时,Nathing 出现在我的 ListView 上mytb2,但是当我使用此代码时

     public MainPage()
    {
        mytb.Add(dp1);
        mytb.Add(dp2);
        mytb.Add(dp3);
        mytb.Add(dp4);

        foreach (Departments dep  in mytb)
            {
                mytb2.Add(dep);
            }               
        
        InitializeComponent();
        this.BindingContext = this;
       
    }     
    public static List<Departments> mytb { get; set; } = new List<Departments>();   

    public  ObservableCollection<Departments> mytb2 { get; set; } = new ObservableCollection<Departments>();     

    Departments dp1 = new Departments() { FullName = "kkkkkk" };
    Departments dp2 = new Departments() { FullName = "kkkkkk" };
    Departments dp3 = new Departments() { FullName = "kkkkkk" };
    Departments dp4 = new Departments() { FullName = "kkkkkk" };

它工作正常。我害怕使用foreach循环,因为它可能会影响我的应用程序性能,那么如何解决这个问题?

提前谢谢

4

2 回答 2

1

考虑为您的 ObservableCollection mytb2 添加INotifyPropertyChanged。使用默认属性,它不会向您的 UI 触发属性更改通知。

public event PropertyChangedEventHandler PropertyChanged;  
  
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")  
{  
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

private ObservableCollection<Departments> _mytb2 = String.Empty;
public ObservableCollection<Departments> mytb2
{  
    get { return this._mytb2; }  
    set
    {
        if (value != this._mytb2)  
        {  
            this._mytb2 = value;  
            NotifyPropertyChanged();  
        }  
    }  
}  
于 2020-06-21T17:13:39.827 回答
1

这是另一个有效的解决方案,杰森说这就是我解决这个问题的方法我刚刚添加了这行代码

 mytb2  = new ObservableCollection<Departments>(mytb);

在这里

 public MainPage()
{
    mytb.Add(dp1);
    mytb.Add(dp2);
    mytb.Add(dp3);
    mytb.Add(dp4);
    mytb2  = new ObservableCollection<Departments>(mytb);          
    InitializeComponent();
    this.BindingContext = this;
   
}     
public static List<Departments> mytb { get; set; } = new List<Departments>();   

public ObservableCollection<Departments> mytb2 { get; set; }     

Departments dp1 = new Departments() { FullName = "kkkkkk" };
Departments dp2 = new Departments() { FullName = "kkkkkk" };
Departments dp3 = new Departments() { FullName = "kkkkkk" };
Departments dp4 = new Departments() { FullName = "kkkkkk" };
于 2020-06-21T17:34:12.157 回答