WPF-множественные представления на ObservableCollection - PullRequest
1 голос
/ 14 июля 2011

У меня есть модель представления, содержащая два определенных CollectionViews.

Один я использую для навигации и ввода / редактирования данных.Другой, который я хочу использовать для целей фильтрации и показать фильтрацию в каком-либо Listview в форме.

Я не хочу, чтобы основное представление (используемое в целях DataEntry) было затронуто, когда я применяю фильтрацию к наблюдаемой коллекции.

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 14 июля 2011

Пока вы используете отдельные виды коллекций, изменение одного не повлияет на другое.В этом смысл представлений коллекции - это независимые представления одной и той же коллекции.

0 голосов
/ 15 июля 2011

ок, понял!и продолжил с той же идеей.Но когда я это сделал, я получил Error = "Вызывающий поток не может получить доступ к этому объекту, потому что другой поток владеет им."Следовательно, моя фильтрация не работает .. Ниже приведен код -

    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; 
        }
    }
...