我正在创建一个应用程序,允许用户EntityFramework
使用 WPF 将一些员工详细信息添加到模型中。
到目前为止,我有一个ListView
代表员工姓名的列表,当您选择员工姓名时,它会选择另一个中的特定数据ListView
。我已经使用 aPredicate
和 a完成了这一点ICollectionSource
。
但是我现在想要实现的,是有一个所谓的搜索引擎。因此,当用户在 a 中输入TextBox
员工姓名时,它会根据在搜索框中输入的内容过滤员工姓名的名称。
我已使用此链接作为指南,但我不太确定如何在我自己的设计中实现它;在示例中,他们使用了 aResource
并使用了Array
.
这是我尝试过的,使用Predicate
;
private EmployeeListViewModel()
: base("")
{
EmployeeList = new ObservableCollection<EmployeeViewModel>(GetEmployees());
this._view = new ListCollectionView(this.employeeList);
}
private ListCollectionView _view;
public ICollectionView View
{
get { return this._view; }
}
private string _TextSearch;
public string TextSearch
{
get { return _TextSearch; }
set
{
_TextSearch = value;
OnPropertyChanged("TextSearch");
if (String.IsNullOrEmpty(value))
View.Filter = null;
else
View.Filter = new Predicate<object>(o => ((EmployeeViewModel)o).FirstName == value);
}
}
在我看来;
<TextBox Height="23" Name="txtSearch" VerticalAlignment="Bottom" Margin="70,0,0,183" Width="100" Grid.Row="1"
Text="{Binding TextSearch, UpdateSourceTrigger=PropertyChanged}"/>
但是似乎发生的是当我输入一些东西时,它会抛出这个异常;
Object reference not set to an instance of an object.
所以我的问题是,我怎样才能实现这一点,以便它实际上使我能够过滤搜索框中的名称列表?
任何帮助将不胜感激或指导如何实现这一目标。