WPF Maintenir le Focus du Clavier

Je suis de la création d'un UserControl composé d'un TextBox et un ListView. Je veux le focus du clavier pour rester avec le TextBox aussi longtemps que le contrôle a le focus du clavier (changements de la sélection dans le ListView ne devrait pas supprimer le focus du clavier de l' TextBox).

J'ai essayé d'attraper GotKeyboardFocus dans le ListView et passer le focus du clavier retour à la TextBox à l'aide de Keyboard.Focus(), mais ce qui semble annuler toute opération de sélection dans le ListView. Le code ci-dessous montre le problème. Quelqu'un sait-il comment obtenir cette fonctionnalité?

<Window x:Class="WpfApplication5.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <StackPanel>
        <TextBox x:Name="TextBox1" />
        <ListView x:Name="ListBox1" Keyboard.GotKeyboardFocus="ListBox1_GotKeyboardFocus">
            <ListViewItem Content="Able" />
            <ListViewItem Content="Baker" />
            <ListViewItem Content="Charlie" />
        </ListView>
    </StackPanel>
</Window>

using System.Windows;
using System.Windows.Input;

namespace WpfApplication5
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void ListBox1_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
        {
            Keyboard.Focus(TextBox1);
        }
    }
}

OriginalL'auteur Joseph Sturtevant | 2009-02-04