Guy's after trying to autocomplete a textbox i move towards now to an autocomplete combobox.Because i cannot add all controls to a textbox.But in combobox,i did that.But a problem also 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:Static SystemParameters.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
{
System.Windows.Controls.TextBox textBox = comboBox1.Template.FindName("PART_EditableTextBox", comboBox1) as System.Windows.Controls.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();
}
}