我有一个包含定义的两个 CollectionViews 的视图模型。
我用于导航和数据输入/编辑的一个。另一个我想用于过滤目的并在表单上的某些 Listview 中显示过滤。
当我对 observablecollection 应用过滤时,我不希望主视图(用于 DataEntry 目的)受到影响。
提前致谢!
我有一个包含定义的两个 CollectionViews 的视图模型。
我用于导航和数据输入/编辑的一个。另一个我想用于过滤目的并在表单上的某些 Listview 中显示过滤。
当我对 observablecollection 应用过滤时,我不希望主视图(用于 DataEntry 目的)受到影响。
提前致谢!
只要您使用单独的集合视图,更改一个不会影响另一个。这就是集合视图的意义——它们是同一集合上的独立视图。
好的,我知道了!并以同样的想法继续前进。但是当我这样做时,我得到错误 =“调用线程无法访问此对象,因为不同的线程拥有它。”。因此我的过滤不起作用..以下是代码-
public ICollectionView Clients { get; set; } //Used for Data-navigation/modification
public ListCollectionView CodeView { get; set; } // to be used for filteration purpose on form.
string searchText = String.Empty;
public string CompanyCodeSearch
{
get { return searchText; }
set
{
try
{
searchText = value;
OnPropertyChanged("CompanyCodeSearch");
CodeView.Filter = new Predicate<object>(cmFilterData);
}
catch (Exception ex)
{
}
}
}
private bool cmFilterData(object item)
{
bool _filteredData = false;
try
{
var value = (item as cntClient);
if (value == null || value.CompanyCode == null)
return false;
_filteredData = value.CompanyCode.StartsWith(this.CompanyCodeSearch);
return _filteredData;
}
catch (Exception ex)
{
return false;
}
}