На удивление мало кода описывающего поведение вот этого класса. Грубо говоря поискового интерфейса.
В принципе если на вьюшке есть все данные и нужно просто отфильтровать источник все себе нормально работает и такое впечатление что ребята так и задумали. Но когда нужно получить данные снаружи, то какое то извращение получается. Сейчас в общем то экспериментирую после перенесу все это в вышестоящую модель. Просто интересна логика, как асинхронно заполнять источник данных. Или просто забить на выпадающий список и просто на вьюшке фильтровать по изменению OnQueryChanged, а в выпадающем списке ничего не выводить.
Проблема собственно в том что я не совсем понимаю логику данного контрола, в случае просмотра результатов в выпадающем списке.
public class SfSearchHandler : SearchHandler
{
private readonly MainSearchViewModel _vm = new MainSearchViewModel();
private QuotaViewModel _qvm;
public bool IsBusy => _vm.IsBusy;
public SfSearchHandler()
{
_vm.CompliteItems += Complete;
}
private void Complete()
{
if (_qvm != null)
{
MainThread.BeginInvokeOnMainThread(() =>
{
ItemsSource = _vm.Items.ToList();
_qvm.IsBusy = false;
});
}
}
protected override void OnQueryChanged(string oldValue, string newValue)
{
base.OnQueryChanged(oldValue, newValue);
if (string.IsNullOrWhiteSpace(newValue))
{
ItemsSource = null;
}
else
{
if (BindingContext is QuotaViewModel bs)
{
_qvm = bs;
_qvm.IsBusy = true;
}
_vm.LoadItemsCommand.Execute(newValue);
}
}