13 Stimmen

WPF-Popup bei TextBox-Fokus öffnen

Ich möchte ein Popup öffnen, wenn der Fokus auf einem Textfeld liegt Hier ist der Code, den ich geschrieben habe:

<Window x:Class="Testpopup.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <StackPanel>
        <TextBox  x:Name="text" GotKeyboardFocus="text_GotKeyboardFocus" />
        <Button Click="Button_Click"  Content="but"/>
        <Popup x:Name="popup" Width="100" Height="100" PlacementTarget="{Binding ElementName=text}"
            StaysOpen="False">
            <Grid>
                <StackPanel>
                    <DatePicker />
                    <TextBox />
                </StackPanel>
            </Grid>
        </Popup>

    </StackPanel>
</Grid>

 private void Button_Click(object sender, RoutedEventArgs e)
    {
        popup.IsOpen = true;
    }

    private void text_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
    {
        popup.IsOpen = true;
    }

Wenn ich auf die Schaltfläche klicke, funktioniert alles einwandfrei. Wenn ich auf das Textfeld klicke, öffnet und schließt sich das Popup

Wenn ich StaysOpen="False" entferne, wird das Popup geöffnet, aber nicht geschlossen.

Ich versuche, den Fokus auf das Popup zu setzen, bevor ich es öffne, aber das funktioniert nicht so gut.

Haben Sie eine Idee?

Vielen Dank! Nidal.

17voto

HCL Punkte 35083

Fügen Sie die folgende Bindung zu Ihrer Popup-Deklaration hinzu:

StaysOpen="{Binding ElementName=text,Path=IsKeyboardFocused}"

Damit sollte es klappen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X