I ran into this problem not long ago when migrating an inherited AutoCompleteBox from SL2 to SL3, so note these code samples are from a custom control that inherits directly from AutoCompleteBox.
First, I declared a class-level variable to hold the Popup portion of the AutoCompleteBox:
private Popup dropdownPopup = null;
Then, overriding the OnApplyTemplate method, you can grab your Popup from the default AutoCompleteBox template:
this.dropdownPopup = this.GetTemplateChild("Popup") as Popup;
Now, you can handle the KeyDown event of the AutoCompleteBox and display your popup whenever you want.
protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e)
{
base.OnKeyDown(e);
this.dropdownPopup.IsOpen = true;
}
Finally, you might run into issues if the Text property of the AutoCompleteBox is empty, I found the Popup still doesn't want to open in that case. I overcame that by simply setting the Text to a space if I still wanted it open.