WPF Caliburn.Micro ComboBox IsEditable Text Измененное событие не запускается до окончания события действия - PullRequest
0 голосов
/ 06 марта 2020

У меня есть тестовое приложение WPF, использующее Caliburn.Micro. Я пытаюсь создать с помощью ComboBox, который можно ввести. Связанная информация DataGrid будет обновляться / фильтроваться при вводе текста.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда мое событие ExecuteSearch получает срабатывает. Он передает информацию до того, как текст был отредактирован. Мне интересно, как я могу получить текстовую информацию, передаваемую функции после нажатия клавиши.

Буду признателен за любую помощь. Соответствующий код ниже:

Просмотр:

<TextBlock Text="Search: " />
<ComboBox x:Name="SearchOptions"
          IsEditable="True"
          DisplayMemberPath="Search"
          cal:Message.Attach="[Event KeyDown] = [Action ExecuteSearch($source)]"
          MinWidth="200">
</ComboBox>

ViewModel:

public void ExecuteSearch(object searchText)
    {
        ComboBox searchbox = (ComboBox)searchInfo;
        if (searchbox.Text != null && searchbox.Text != "")
        {
            string sql = "SELECT * FROM SearchItems WHERE PartNumber LIKE " + searchbox.Text +"";
            SearchItems = SqliteConnector.LoadData<SearchItemsModel>(sql, new Dictionary<string, object>());
        }
        else
        {
            string sql = "SELECT * FROM SearchItems";
            SearchItems = SqliteConnector.LoadData<SearchItemsModel>(sql, new Dictionary<string, object>());
        }
    }

Когда вызывается событие searchbox.Text == "", даже если было введено «0».

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 07 марта 2020

Вам необходимо использовать событие KeyUp.

<ComboBox x:Name="SearchOptions"
          IsEditable="True" 
          cal:Message.Attach="[Event KeyUp] = [Action ExecuteSearch($source)]"
          MinWidth="200">
        </ComboBox>
...