I wish to set focus on a TextBox after an item is selected from a ListView control, but I can't seem to get it to focus from within my 'SelectionChanged' event method FocusOnTextBox().
For some reason the ListView always has focus after a selection is made.
I have created a Visual Studio application to demonstrate this problem:
How can I get the focus to return to the TextBox from within my 'SelectionChanged' event method?
MainWindow.xaml:
<Window x:Class="WpfApplication1.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> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <ListView Name="list_view1" Grid.Column="0" SelectionChanged="FocusOnTextBox"> <ListViewItem Content="1" /> <ListViewItem Content="2" /> <ListViewItem Content="3" /> </ListView> <TextBox Name="text_box1" Grid.Column="1" Text="When a selection is chosen from the left hand side ListView, I want THIS word to be selected and for the focus to change to this text box - this will show the selection to the user.

However, right now it doesn't seem to work, the focus remains on the ListView regardless of it being set to Focus() in the FocusOnTextBox() method, which is fired on the 'SelectionChanged' event." TextWrapping="Wrap" /> </Grid> </Window> MainWindow.xaml.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // Test that the selection of the word THIS and the Focus() works text_box1.SelectionStart = 68; text_box1.SelectionLength = 4; text_box1.Focus(); } private void FocusOnTextBox(object sender, SelectionChangedEventArgs e) { MessageBox.Show("FocusOnTextBox fired on selection with list view"); text_box1.SelectionStart = 68; text_box1.SelectionLength = 4; text_box1.Focus(); } } }