Я пытаюсь использовать шаблон MVVM в C #.Поэтому у меня есть класс клиента:
public class Customer
{
public string CustumerNumber { get; set; }
public string CustomerName { get; set; }
}
Я заполняю список Клиентов из базы данных:
public class CustomerList
{
public static List<Customer> customerlist = new List<Customer>();
public static List<Customer> GetCustomer()
{
// Get data from database
}
}
Моя ViewModel:
class ViewModel : BaseViewModel
{
public ObservableCollection<Customer> Customers { get; set; }
public string CustomerSearch { get; set; }
public ViewModel()
{
Customers = new ObservableColletion<Customers>(CustomerList.GetCustomer());
}
}
Я связал Клиентовв WPF-ListBox:
<ListBox ItemsSource="{Binding Customers}"
DisplayMemberPath="CustomerName"/>
Допустим, у меня есть 10 объектов CustomerName в ListBox.Существует TextBox, который содержит строку.Теперь я хочу удалить все объекты в ListBox, которые не содержат строку.Я решил проблему во ViewModel следующим образом:
public void SearchCustomer()
{
foreach (Customer item in Customers)
{
if (item.Customers.ToUpper().Contains(CustomerSearch.ToUpper()) == false)
{
this.Customers = new ObservableCollection<Customer>(CustomerList.RemoveItemsFromView(item));
}
}
}
Это правильно?Мне кажется, что это неправильно, потому что каждый раз, когда цикл удаляет элемент, я создаю новый ObservableCollection
вместо манипулирования существующим.Есть ли более профессиональный способ решения этой задачи?
Для PropertyChangeEvent
я использую FodyWeaver