c# - WPF 弹出窗口意外关闭
问题描述
我有一个带有文本框的应用程序。每当用户单击 TextBox 时,都会出现一个弹出窗口,提供其他选项。我设法使用下面的 XAML 代码做到了这一点。但是,当我单击复选框时,弹出窗口会自动关闭。如何防止这种情况?
我还尝试将 Pupup 的 IsOpen 属性绑定到我的视图模型,并使用 TextBox 的 LeftClick MouseAction 将其设置为 true,但随后 TextBox 失去焦点,实际输入变得非常繁琐。
当前的 XAML 代码:
<Window x:Class="WpfPopupTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TextBox x:Name="Input" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" />
<Popup PlacementTarget="{Binding ElementName=Input}" Placement="Top">
<Popup.Style>
<Style TargetType="{x:Type Popup}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Input, Path=IsFocused}" Value="True">
<Setter Property="IsOpen" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Popup.Style>
<StackPanel Orientation="Horizontal">
<CheckBox/>
<TextBlock Grid.Column="1">Option</TextBlock>
</StackPanel>
</Popup>
</Grid>
</Window>
解决方案
正如 Digitalsa1nt 所建议的那样,问题是当您单击 CheckBox 时文本框失去焦点,并且触发器停止保持弹出窗口打开。
但是,如果 CheckBox 从未获得焦点,这不是问题。
<CheckBox Focusable="False"/>
推荐阅读
- visual-c++ - SetMarquee 函数不适用于 C++ 中的多字节字符集
- azure - 是否可以在没有 RBAC 的情况下通过 AAD 授予创建 Azure 资源组的权限?
- android - 隐藏某些字段的软键盘问题
- java - 找不到 Open GL ES 错误的原因
- swift - CloudKit - CKRecord.ID 可接受的记录名称?
- svg - Fabric.js strokeWidth 导致对象在某些 SVG 上移动(平移)
- css - 如何减小 input-group-addon Bootstrap 的大小
- python - 禁用 TreeView 列“最小尺寸”行为
- mysql - 错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器相对应的手册
- python - 如何在 python 中修复输出 ¤+ 到 ¥ 或 $(货币格式)