Autocomplete Combobox in WPF
Guy's i am trying to autocomplete a combobox in WPF.But a problem stands there.When i type in combobox it's popup filters the items according to typed text nicely,but i need to select a option by mouse,cannot by keyboard arrow's.I tried to solve it with keydown event but somehow it cannot focus combobox i think.Someone can suggest me here what wrong i am doing or how can i enable keyboard arrowkey events?Below are my codes:
XML:
<ComboBox Height="23" HorizontalAlignment="Left" Margin="160,236,0,0"
Name="comboBox1" VerticalAlignment="Top" Width="120" IsEditable="True"
ItemsSource="{Binding}" KeyDown="comboBox1_KeyDown">
<ComboBox.Resources>
<sys:Double x:Key="{x:StaticSystemParameters.VerticalScrollBarWidthKey}">0
</sys:Double>
</ComboBox.Resources>
</ComboBox>
C#:
public partial class MainWindow : Window
{
List<string> nameList;
public MainWindow()
{
InitializeComponent();
nameList = new List<string> { "A0-Word","B0-Word","C0-Word",
"A1-Word","A111","A11122","B1-Word",
"C1-Word", "B2-Word","C2-Word", "C3-Word", };
comboBox1.DataContext = nameList;
comboBox1.Loaded += delegate
{
TextBox textBox = comboBox1.Template.FindName("PART_EditableTextBox", comboBox1) as TextBox;
Popup popup = comboBox1.Template.FindName("PART_Popup", comboBox1) as Popup;
if (textBox != null)
{
textBox.TextChanged += delegate { comboBox1.Items.Filter += (item) =>
{
if (item.ToString().StartsWith(textBox.Text))
{
popup.IsOpen = true;
return true;
}
else { return false; } }; }; } };
comboBox1.KeyDown+=new System.Windows.Input.KeyEventHandler(comboBox1_KeyDown);
}
private void comboBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Down)
{
e.Handled = true;
comboBox1.Items.MoveCurrentToNext();
}
}