WPF弹出窗口意外关闭

时间:2019-06-06 15:05:52

标签: c# wpf popup

我有一个带有文本框的应用程序。每当用户单击文本框时,都会出现一个弹出窗口,其中提供了其他选项。我设法使用下面的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>

1 个答案:

答案 0 :(得分:-1)

正如Digitalsa1nt所建议的,问题是当您单击CheckBox时,文本框失去焦点,并且触发器停止使弹出窗口保持打开状态。

但是,如果CheckBox从未集中注意力,这不是问题。

<CheckBox Focusable="False"/>