Как искать элементы в CollectionView - PullRequest
1 голос
/ 20 июня 2020

У меня есть ObservableRangeCollection, состоящая из нескольких элементов. Как я могу выполнить поиск в ViewModel страницы?

Edit:

ObservableCollection в ViewModel:

private ObservableRangeCollection<Smetka> _smetki = new ObservableRangeCollection<Smetka>();
        public ObservableRangeCollection<Smetka> Smetki
        {
            get { return _smetki; }
            set { SetProperty(ref _smetki, value); }
        }

И это CollectionView в View:

<CollectionView ItemsSource="{Binding Smetki}" BackgroundColor="{DynamicResource SecondaryColor}"
                            VerticalScrollBarVisibility="Never" HorizontalScrollBarVisibility="Never"
                            SelectionMode="Single" SelectionChangedCommand="{Binding LaunchDetailPage}"
                            SelectedItem="{Binding SelectedSmetka}" Grid.Row="1">

</CollectionView>

Я уже давно ищу пример поиска ВМ. Я был бы очень признателен, если бы кто-нибудь мог предоставить мне его.

Изменить 2:

Вот как обычно выглядит приложение.

enter image description here

When Search Criteria is given the ObservableRangleCollection should display only the Smetkas, who meet the Criteria.

enter image description here

Так теперь выглядит приложение

После удаления критериев поиска должны отображаться все Сметки, которые соответствуют новым критериям. Если строка пуста или пробела, она должна отображать их все.

1 Ответ

1 голос
/ 22 июня 2020

Вы имеете в виду, что хотите получить элемент из своего списка?

Если да, просто используйте LINQ, например:

public class PLU
{ 
  public int ID { get; set; } 
  public string name { get; set; } 
  public double price { get; set; } 
  public int quantity {get;set;}
}

public static ObservableCollection<PLU> PLUList = new ObservableCollection<PLU>();  

получить как:

PLU item = PLUList.Where(z => z.ID == 12).FirstOrDefault();

Обновите :

string filter = "9";//the filter you input
var searchItems = new ObservableCollection<Smetka>(Smetki.Where((smetka) => smetka.Id.Contains(filter))); // Assuming the property is Id.

, тогда вы можете заменить Smetki на searchItems.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...