J'ai récemment rencontré ce problème lors de la migration d'une AutoCompleteBox héritée de SL2 vers SL3. Notez donc que ces exemples de code proviennent d'un contrôle personnalisé qui hérite directement de AutoCompleteBox.
D'abord, je déclarais une variable de niveau de classe pour maintenir la partie Popup du AutoCompleteBox:
private Popup dropdownPopup = null;
Ensuite, redéfinissant la méthode OnApplyTemplate, vous pouvez saisir votre Popup du modèle par défaut AutoCompleteBox:
this.dropdownPopup = this.GetTemplateChild("Popup") as Popup;
Maintenant, vous pouvez gérer l'événement KeyDown de l'AutoCompleteBox et afficher votre popup lorsque vous le souhaitez.
protected override void OnKeyDown(System.Windows.Input.KeyEventArgs e)
{
base.OnKeyDown(e);
this.dropdownPopup.IsOpen = true;
}
Enfin, vous pourriez rencontrer des problèmes si la propriété Text du AutoCompleteBox est vide, j'ai trouvé le Popup ne veut toujours pas ouvrir dans ce cas. J'ai surmonté cela en plaçant simplement le texte dans un espace si je le voulais toujours ouvert.