title: Textbox Keydown event not firing when arrow key press
body: <p>I have a datagrid with one  column as DataGridTemplateColumn as follows :</p>
  
  <pre><code>&lt;my:DataGrid Name="dgvSales"   RowHeight="23"  SelectionUnit="Cell"  BeginningEdit="dgvSales_BeginningEdit"  AutoGenerateColumns="False"   CellEditEnding="dgvSales_CellEditEnding" &gt;
                     &lt;my:DataGrid.Columns&gt;
                          &lt;my:DataGridTemplateColumn Header="Product Name" Width="200"&gt;
                              &lt;my:DataGridTemplateColumn.CellTemplate&gt;
                                  &lt;DataTemplate&gt;
                                      &lt;TextBlock Text="{Binding Product_Name}"&gt;&lt;/TextBlock&gt;
                                  &lt;/DataTemplate&gt;
                              &lt;/my:DataGridTemplateColumn.CellTemplate&gt;
                              &lt;my:DataGridTemplateColumn.CellEditingTemplate&gt;
                                  &lt;DataTemplate&gt;
                                      &lt;TextBox x:Name="txtbxProduct" Text="{Binding Product_Name}" TextChanged="txtbxProduct_TextChanged" KeyDown="txtbxProduct_KeyDown"&gt;&lt;/TextBox&gt;
                                  &lt;/DataTemplate&gt;
                              &lt;/my:DataGridTemplateColumn.CellEditingTemplate&gt;
                          &lt;/my:DataGridTemplateColumn&gt;
                   &lt;/my:DataGrid.Columns&gt;
  &lt;/my:DataGrid&gt;
  </code></pre>
  
  <p>When the cell value change I want to populate some items to the listview ,the TextChanged event is as follows :</p>
  
  <pre><code> private void txtbxProduct_TextChanged(object sender, TextChangedEventArgs e)
      {
          TextBox tb = (TextBox)sender;
          if (tb.Text.Trim() != "")
          {
              string qry = "select PL.Record_Id as PList_Id,PM.Record_Id as Product_Id,PM.Product_Code,PM.Product_Name,PTM.Product_Type,PL.Purchase_Rate ,PL.Selling_Rate,PL.MRP  from dbo.Tbl_Product_Master PM  join Tbl_Product_List PL on PL.Product_Id=PM.Record_Id   join Tbl_Product_Type_Master PTM on PTM.Record_Id=PM.Product_Category_Id where PL.Batch_Flag=0  and PM.Is_Del='false'and PM.Is_Active='true'  and PM.Product_Name like '%" + tb.Text.Trim() + "%'  order by PM.Product_Name ";
              DataSet ds = ObjCommon.GetObject.ExecuteQuery_Select(Connection.ConnectionString, qry);
              if (ds.Tables[0].Rows.Count &gt; 0)
              {
                  lstvwProductCode.ItemsSource = ds.Tables[0].DefaultView;
                  lstvwProductCode.Visibility = Visibility.Visible;
              }
              else
              {
                  lstvwProductCode.ItemsSource = null;
                  lstvwProductCode.Visibility = Visibility.Collapsed;
              }
          }
          else
          {
              lstvwProductCode.ItemsSource = null;
              lstvwProductCode.Visibility = Visibility.Collapsed;
          }
      }
  </code></pre>
  
  <p>When the User enter the down key on the keyboard I want to focus on the listview but It won't fire the Keydown event when I press Down,Back,Space etc keys ,But other keys like alphanumeric keys all working fine .My keydown event is as follows :</p>
  
  <pre><code>private void txtbxProduct_KeyDown(object sender, KeyEventArgs e)
      {
          TextBox tb = (TextBox)sender;
          if (e.Key == Key.Escape)
          {
              tb.Clear();
              lstvwProductCode.Visibility = Visibility.Collapsed;
              tb.Focus();
          }
          else if (e.Key == Key.Down)
          {
              if (lstvwProductCode.Items.Count &gt; 0)
              {
                  lstvwProductCode.SelectedIndex = 0;
                  lstvwProductCode.Focus();
                  lstvwProductCode.Visibility = Visibility.Visible;
              }
          }
      }
  </code></pre>
  
  <p>What I did wrong in my code ?</p>