清除属性时,字段显示为ObservableCollection

Jad*_*ric 0 c# xamarin.forms

我对XAML/Xamarin比较陌生,我正在遇到一些我希望有人可以帮我澄清的事情.

我知道标题是误导性的,但我不能说它有任何不同.

我的ViewModel中有以下属性:

private ObservableCollection<Schedule> _scheduleList;
public ObservableCollection<Schedule> ScheduleList
{
    get
    {
        return _scheduleList;
    }

    set
    {
        value = _scheduleList;
    }
}
Run Code Online (Sandbox Code Playgroud)

在某个地方,我做这样的事情:

private void DayFilter(string week)
{
    try
    {
        var list = _scheduleList.Where(x => x.ScheduleDate.DayOfWeek.ToString() == week);

        ObservableCollection<Schedule> newlist = new ObservableCollection<Schedule>(list);

        ScheduleList.Clear(); // <- this line clears out _scheduleList as well

        foreach (var item in newlist)
        {
            ScheduleList.Add(item);
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
Run Code Online (Sandbox Code Playgroud)

每当调用ScheduleList.Clear()时,它也会清除_scheduleList哪个是私有字段.

我知道这与ObservableCollection的事实有关,但是要求是它应该是,并且我找不到保留值的方法_scheduleList,因为我需要在应用程序的整个生命周期中填充这个字段.

那场战场_scheduleList没有被淘汰吗?

Jas*_*son 5

这就是C#的工作原理

ScheduleList.Clear();
Run Code Online (Sandbox Code Playgroud)

返回对_scheduleList的引用(这是公众得到的),然后在其上调用Clear.

在您的方案中,您可能需要维护两个完全独立的数据副本 - 原始数据,以及用于过滤/显示数据的数据.