C# 使用代码在CollectionVIewSource中选择特定记录
嗨。我有一个应该是简单的问题,这显然超出了我的理解范围。如何获取collectionViewSource以选择特定记录 我试过这个:C# 使用代码在CollectionVIewSource中选择特定记录,c#,wpf,mvvm,entity-framework-6,C#,Wpf,Mvvm,Entity Framework 6,嗨。我有一个应该是简单的问题,这显然超出了我的理解范围。如何获取collectionViewSource以选择特定记录 我试过这个: private object Select_CommandExecute(object param) { // Select * From Signups where Tag = '2'; var select = context.signups.Where(s => s.tag == 2); return signupsViewSo
private object Select_CommandExecute(object param)
{
// Select * From Signups where Tag = '2';
var select = context.signups.Where(s => s.tag == 2);
return signupsViewSource.View.MoveCurrentTo(select);
}
但它所做的只是清除所有字段。知道我是怎么做的吗?
无论我输入什么数字,结果都是一样的。我想过滤器就是你要找的。下面是一个使用过滤器的示例代码
IList<Employer> employers;
ICollectionView _employerView;
private string _filterString=string.Empty;
public Window1()
{
InitializeComponent();
employers = GetCustomers();
_employerView = CollectionViewSource.GetDefaultView(employers);
_employerView.Filter = EmployerFilter;
}
public bool EmployerFilter(object item)
{
Employer employer = item as Employer;
return employer.Name.ToLower().StartsWith(_filterString.ToLower());
}
public string FilterString
{
get { return _filterString; }
set{
_filterString = value;
OnPropertyChanged("FilterString");
_employerView.Refresh();
}
}
希望有帮助。不确定是否可以将查询传递到MoveCurrentTo?但正如文档所述,传入的参数应该是表示该项的对象。在这种情况下,您应该使用FirstOrDefault而不是Where,然后在将其传递到MoveCurrentTo之前检查select是否为null。@KingKing-相同的结果。如果我可以问一下的话,您将如何搜索行值?使用集合视图是否是解决此问题的正确方法?当您说“清除所有字段”时是什么意思?你的意思是取消选择当前选定的行吗?@MikeStrobel是的。它就是这样做的。如果我使用的是文本框,它们在单击按钮时都变为空白