1

我有一个包含定义的两个 CollectionViews 的视图模型。

我用于导航和数据输入/编辑的一个。另一个我想用于过滤目的并在表单上的某些 Listview 中显示过滤。

当我对 observablecollection 应用过滤时,我不希望主视图(用于 DataEntry 目的)受到影响。

提前致谢!

4

2 回答 2

5

只要您使用单独的集合视图,更改一个不会影响另一个。这就是集合视图的意义——它们是同一集合上的独立视图。

于 2011-07-14T17:47:34.357 回答
0

好的,我知道了!并以同样的想法继续前进。但是当我这样做时,我得到错误 =“调用线程无法访问此对象,因为不同的线程拥有它。”。因此我的过滤不起作用..以下是代码-

    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; 
        }
    }
于 2011-07-15T14:23:14.763 回答