Я выиграл другие битвы и проиграл эту - где наш дизайн иногда вынуждает пользователей к полям. Очевидно, примеры кода упрощены. Дайте мне знать, если мне нужно где-нибудь предоставить более подробную информацию.
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBox Height="23" Margin="5,5,0,0" Name="textBox1" />
<TextBox Height="23" Margin="5,65,0,0" Name="textBox2" />
<ComboBox Height="23" Margin="5,125,0,0" Name="comboBox1" >
<ComboBoxItem Content="Lorem Ipsum" />
</ComboBox>
</Grid>
</Window>
XAML.CS:
using System.Windows.Input;
namespace WpfApplication1 {
public partial class MainWindow {
public MainWindow() {
InitializeComponent();
textBox1.Focus();
textBox1.PreviewLostKeyboardFocus += Foo;
}
void Foo(object sender, KeyboardFocusChangedEventArgs e) {
e.Handled = true;
}
}
}
Приложение запускает с фокусом / курсором на textBox1 по умолчанию. Обработчик PreviewLostKeyboardFocus этого TextBox не позволяет пользователю перемещать фокус на textBox2 с помощью клавиатуры или мыши.
Но пользователь может с помощью мыши перемещать фокус на comboBox1.
Почему пользователь может перемещать фокус на comboBox1 с помощью мыши и как заставить пользователя оставаться в textBox1?