Я видел много похожих вопросов, но мне не удалось найти ни вопрос / ответ, ни учебник, в котором четко перечислены все компоненты, необходимые для его работы. Я пытаюсь следовать MVVM, но, поскольку это полностью связано с пользовательским интерфейсом, я не против создания некоторого кода.
Чего я пытаюсь достичь:
ListView.ItemsSource
привязан к ObservableCollection<T>
- Фильтр отображаемых элементов в
ListView
на основе TextBox
- Фильтр обновляется как пользовательские типы в
TextBox
В моем ViewModel
у меня есть что-то вроде этого:
private ObservableCollection<Customer> _customers;
public ObservableCollection<Customer> Customers
{
get { return _customers; }
set
{
_customers= value;
RaisePropertyChanged("Customers");
}
}
private Customer _selected_Customer;
public Customer Selected_Customer
{
get { return _selected_Customer; }
set
{
_selected_Customer= value;
RaisePropertyChanged("Selected_Customer");
}
}
private string _filtered_Name;
public string Filtered_Name
{
get { return _filtered_Name; }
set
{
_filtered_Name = value;
RaisePropertyChanged("Filtered_Name");
}
}
И в моем XAML это выглядит так:
<CollectionViewSource x:Key="cvs"
x:Name="Customer_Details_View"
Source="{Binding Path=Customers}"/>
<TextBox x:Name="Filtered_Name" Text="{Binding Filtered_Name, Mode=TwoWay}"/>
<ListView ItemsSource="{Binding ElementName=Customer_Details_View}"
SelectedItem="{Binding Selected_Customer, Mode=TwoWay}">
Я хочу отфильтровать свой ObservableCollection<Customer>
с помощью следующего logi c: Customer.Name.ToLower().Contains(Filtered_Name.ToLower())
Как связать TextBox.Text
с CollectionViewSource
или использовать событие CollectionViewSource.Filter
для применения вышеуказанного фильтра?