C# ObservableCollection未按预期工作,mvvm灯亮

C# ObservableCollection未按预期工作,mvvm灯亮,c#,windows-phone-8.1,mvvm-light,observablecollection,C#,Windows Phone 8.1,Mvvm Light,Observablecollection,我做的是一个搜索函数来搜索事件。 我这里的问题是,当我进入页面并将我的ObservableCollection计数设置为0时,会触发一个属性,但我的数据库中有事件详细信息。 这应该是如何工作的,当我在页面上输入时,有一个中继命令,它执行并从数据库检索所有数据,并将其放入可观察的集合中,并将事件名称显示在列表框中。只有当我输入一个字符,然后在它检测到事件后,它才会被激活 这是我的密码: xaml: 视图模型代码: private static ObservableCollection<E

我做的是一个搜索函数来搜索事件。 我这里的问题是,当我进入页面并将我的
ObservableCollection
计数设置为0时,会触发一个属性,但我的数据库中有事件详细信息。 这应该是如何工作的,当我在页面上输入时,有一个中继命令,它执行并从数据库检索所有数据,并将其放入可观察的集合中,并将事件名称显示在
列表框中。只有当我输入一个字符,然后在它检测到事件后,它才会被激活

这是我的密码:

xaml:


视图模型代码:

private static ObservableCollection<Event> _searchEventCollection = new ObservableCollection<Event>();

public static ObservableCollection<Event> SearchEventCollection
{
    get { return _searchEventCollection; }
    set { _searchEventCollection = value; }
}

//search from homepage event section
private RelayCommand _eventSearch;
/// <summary>
/// Gets the EventSearch.
/// </summary>
public RelayCommand EventSearch
{
    get
    {  return _eventSearch
            ?? (_eventSearch = new RelayCommand(
            async () =>
            {
                SearchEventCollection.Clear();
                var eventList = await App.MobileService.GetTable<Event>().ToListAsync();

                foreach (Event ename in eventList)
                {
                    SearchEventCollection.Add(new Event
                    {
                        Id = ename.Id,
                        EventName = ename.EventName,
                        Date = ename.Date,
                        Location = ename.Location,
                        Desc = ename.Desc
                    });
                }
            }));
    }
}


private string filter;
public String Filter
{
    get
    {
        return this.filter;
    }
    set
    {
        this.filter = value;
        RaisePropertyChanged("FilteredNames");
    }
}
public List<Event> FilteredNames
{
    get
    {
        if (filter == "") 
        {
            return SearchEventCollection.ToList();
        }
        else
        {
            return (from name in SearchEventCollection where name.EventName.ToUpper().StartsWith(filter.ToUpper()) select name).ToList();
        }
    }
}
public searchfromhomepageViewModel()
{ 
    filter = "";
}
私有静态ObservableCollection\u searchEventCollection=new ObservableCollection();
公共静态ObservableCollection SearchEventCollection
{
获取{return\u searchEventCollection;}
设置{u searchEventCollection=value;}
}
//从主页活动部分搜索
私人中继命令_eventSearch;
/// 
///获取事件搜索。
/// 
公共RelayCommand事件搜索
{
得到
{return\u eventSearch
??(_eventSearch=新继电器命令(
异步()=>
{
SearchEventCollection.Clear();
var eventList=wait App.MobileService.GetTable().toListSync();
foreach(事件列表中的事件名称)
{
SearchEventCollection.Add(新事件
{
Id=ename.Id,
EventName=ename.EventName,
日期=名称日期,
位置=名称位置,
Desc=ename.Desc
});
}
}));
}
}
私有字符串过滤器;
公共字符串过滤器
{
得到
{
返回此.filter;
}
设置
{
this.filter=值;
RaisePropertyChanged(“FilteredNames”);
}
}
公共列表筛选器名称
{
得到
{
如果(过滤器==“”)
{
返回SearchEventCollection.ToList();
}
其他的
{
返回(从SearchEventCollection中的name返回,其中name.EventName.ToUpper().StartsWith(filter.ToUpper())select name.ToList();
}
}
}
公共搜索fromHomePageViewModel()
{ 
过滤器=”;
}

在视图模型代码中设置_eventSearch命令,如下所示

public RelayCommand _eventSearch = new RelayCommand(EventSearch);

在视图模型代码中,按如下方式设置_eventSearch命令

public RelayCommand _eventSearch = new RelayCommand(EventSearch);

页面的数据上下文是什么?你设定在什么位置?加载页面时是否触发EventSearch命令?输出窗口中是否有任何绑定错误?页面加载时,EventSearch会启动。绑定错误我不知道,但在我第一次进入页面时,没有显示任何内容,但数据库中仍然有数据,这意味着绑定到EventSearch命令是正常的。是否可以调试并在“foreach(eventList中的事件名称)”后放置断点,以查看SearchEventCollection是否包含所有项?是的,SearchEventCollection包含所有项,但不显示任何信息。为什么列表框的ItemsSource未绑定到SearchEventCollection?页面的DataContext是什么?你设定在什么位置?加载页面时是否触发EventSearch命令?输出窗口中是否有任何绑定错误?页面加载时,EventSearch会启动。绑定错误我不知道,但在我第一次进入页面时,没有显示任何内容,但数据库中仍然有数据,这意味着绑定到EventSearch命令是正常的。是否可以调试并在“foreach(eventList中的事件名称)”后放置断点,以查看SearchEventCollection是否包含所有项?是的,SearchEventCollection包含所有项,但不显示任何信息。为什么列表框的ItemsSource未绑定到SearchEventCollection?