wpf - 当我在文本框内单击时,如何在 wpf 中启用弹出控件?
问题描述
这是我想添加的功能。我已经制作了 ea 类,将最后一个用户搜索文本保存到 .txt 文件中。当用户打开我的应用程序时,我还可以将搜索列表加载到列表中。但是,我需要帮助的是在我的 xaml 中显示此列表。
我想为用户实现的是当他/她在搜索框内单击时,我想加载最后保存的搜索列表。我希望它显示在搜索框下方的 Popup 控件内的 ListView 中。这就是我设置 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>
但是,当我在文本框内单击时,我的弹出控件没有打开。我究竟做错了什么?提前谢谢了。
解决方案
从 TextBox 中删除 Trigger 并为您的 Popup 尝试以下操作:
<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”替换为该名称。希望这有效。
推荐阅读
- logging - rsync 的“lq%n%Lrq”默认输出格式是什么意思?
- django - 如何在 django 中显示所选选项中的数据
- javascript - 谷歌社交登录 我可以使用 cookie 吗?
- javascript - Bootstrap 折叠菜单中心项
- javascript - 在浏览器中计时传出串行消息的最佳方法
- android - 启动监控模拟器失败 5554 问题
- postgresql - ormar 中的 Alembic 迁移不起作用(FastAPI)
- python - 卸载 Python 3.8 并使用 Python 3.9 | Ubuntu 18.04
- javascript - client.destroy() 不适用于 v12 discord.js
- vb.net - vb.net ms 访问应用程序编码创建新表