Текстовое поле Автозаполнение / Автозапросы - PullRequest
0 голосов
/ 31 января 2020

Можно ли как-нибудь добавить автозаполнение предложений в текстовое поле в приложении WPF? Например, где я связываю предложения с таблицей данных или списком строк? Это возможно с текстовым полем?

 <TextBox Text="{Binding InputText, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
                     HorizontalAlignment="Stretch"
                     VerticalAlignment="Stretch"
                     VerticalContentAlignment="Center" >
        <TextBox.InputBindings>
          <KeyBinding Command="{Binding EnterKeyPressedCommand}" Key="Return" />
        </TextBox.InputBindings>
      </TextBox>

1 Ответ

0 голосов
/ 31 января 2020

Если у вас возникли проблемы с попыткой выяснить, с чего начать, на самом деле существует несколько этапов и, вероятно, НЕСКОЛЬКО способов сделать это.

Вверху моей головы, вы можете создать скрытую ListBox отображается под вашим TextBox, в котором содержатся ваши предложения (убедитесь, что ListBox соответствует размеру содержимого). При изменении текста вы можете использовать простое событие TestChanged.

XAML:

<TextBox x:Name="someTextbox" 
    TextChanged="someTextbox_TextChanged"
</TextBox>

Код сзади:

    private void someTextbox_TextChanged(object sender, TextChangedEventArgs e)
    {
        // Call method to check for possible suggestions.
        // Display Listbox with suggested items.
    }

Затем, нажав на элемент в Listbox обновит текст.
ПРИМЕЧАНИЕ: Вам понадобится какой-то способ предотвратить запуск события logi c, когда пользователь выбирает предложение из ListBox

Теперь для MVVM:

private string _SomeTextbox = "";
public string SomeTextbox
{
    get { return _SomeTextbox; }
    set
    {
        _SomeTextbox = value;
        OnPropertyChanged(new PropertyChangedEventArgs("SomeTextbox"));

        // Call method to check for possible suggestions.
        // Display Listbox with suggested items.
    }
}

С MVVM вы можете сравнительно легко связать видимость и контент ListBox и затем отображать их по мере необходимости.

ДРУГОЙ способ сделать это - отредактировать TextBox по умолчанию, чтобы иметь встроенный ListBox. Однако этот путь более сложен.

Надеюсь, это поможет вам начать.

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