<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:custom="clr-namespace:WpfApplication1" Title="Keyboard Sample" Height="250" Width="300"> <StackPanel> <Label Name="lblNumberOfTargetHits" HorizontalAlignment="Center"/> <TextBox Name="txtTargetKey" GotKeyboardFocus="TextBoxGotKeyboardFocus" LostKeyboardFocus="TextBoxLostKeyboardFocus">A</TextBox> <TextBox TextWrapping="Wrap" GotKeyboardFocus="TextBoxGotKeyboardFocus" LostKeyboardFocus="TextBoxLostKeyboardFocus" KeyDown="SourceTextKeyDown"/> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Windows.Annotations; using System.Windows.Input; namespace WpfApplication1 { public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void TextBoxGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { TextBox source = e.Source as TextBox; if (source != null) { source.Background = Brushes.LightBlue; source.Clear(); } } private void TextBoxLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { TextBox source = e.Source as TextBox; if (source != null) { source.Background = Brushes.White; } } private void SourceTextKeyDown(object sender, KeyEventArgs e) { KeyConverter converter = new KeyConverter(); Key target = Key.None; if (txtTargetKey.Text.Length == 1) { target = (Key)converter.ConvertFromString(txtTargetKey.Text); } } } }