WPF Popup неожиданно закрывается - PullRequest
0 голосов
/ 06 июня 2019

У меня есть приложение с TextBox. Каждый раз, когда пользователь нажимает на TextBox, должно появляться всплывающее окно, предлагающее дополнительные параметры. Мне удалось сделать это, используя код XAML ниже. Однако всплывающее окно автоматически закрывается, когда я щелкаю флажок. Как это можно предотвратить?

Я также пытался связать свойство IsOpen Pupup с моей моделью представления и установить его в true с помощью MouseCction LeftClick для TextBox, но затем 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 голосов
/ 06 июня 2019

Как предположил Digitalsa1nt, проблема в том, что текстовое поле теряет фокус, когда вы нажимаете CheckBox, и триггер перестает держать всплывающее окно открытым.

Но если CheckBox никогда не фокусируется, это не проблема.

<CheckBox Focusable="False"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...