Как включить всплывающий элемент управления в wpf, когда я нажимаю внутри текстового поля? - PullRequest
1 голос
/ 05 марта 2020

Это то, что я хочу добавить в качестве функции. Я уже создал класс ea, который сохраняет последний текст поиска пользователя в файл .txt. У меня также есть это, когда пользователь открывает мое приложение, список запросов загружается в список. Однако мне нужна помощь в отображении этого списка в моем xaml.

То, чего я хочу добиться для пользователя, - это когда он / она щелкает внутри поля поиска, я хочу загрузить список последних сохраненных поисков. Я хотел, чтобы он отображался в ListView внутри элемента управления Popup чуть ниже поля поиска. Вот как я настроил свой xaml

<TextBox Grid.Column="1"
                 Width="100"
                 Name="TextBox"
                 Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
            <TextBox.Resources>
                <Style TargetType="{x:Type Popup}">
                    <Style.Triggers>
                        <Trigger Property="IsFocused" Value="True">
                            <Setter Property="IsOpen" Value="True" />
                        </Trigger>
                        <Trigger Property="IsFocused" Value="False">
                            <Setter Property="IsOpen" Value="False" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Resources>
        </TextBox>
        <Popup Name="SavedSearchesList">
            <ListView ItemsSource="{Binding SavedSearchesList, Mode=OneWay}"
                      SelectedItem="{Binding SavedSearchSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">                
            </ListView>
        </Popup>

Однако, когда я щелкаю внутри текстового поля, мой всплывающий элемент управления не открывается. Что я делаю неправильно? Большое спасибо заранее.

1 Ответ

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

Удалите триггер из TextBox и попробуйте следующее для вашего всплывающего окна:

<Popup Name="SavedSearchesList" IsOpen="{Binding IsFocused, ElementName=NameofTextBox}">
    <ListView ItemsSource="{Binding SavedSearchesList, Mode=OneWay}"
              SelectedItem="{Binding SavedSearchSelected, Mode=TwoWay, 
              UpdateSourceTrigger=PropertyChanged}">                
    </ListView>
</Popup>

Имейте в виду, что вы должны установить имя для вашего TextBox и заменить «NameofTextBox» этим именем. Надеюсь, что это работает.

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