Est-il possible de faire en sorte que la combo-box silverlight soit "drop up", c'est-à-dire qu'elle affiche la popup au-dessus de la combo-box au lieu d'en dessous comme par défaut ?
Réponse
Trop de publicités?La première étape consiste à définir votre propre modèle de ComboBox, qui contient la définition du Popup. Editez une copie en utilisant Blend par exemple.
Cependant, placer ce Popup au-dessus n'est pas une tâche facile car les Popups Silverlight n'ont pas de Placement
o PlacementTarget
comme dans WPF qui permettrait de l'afficher au-dessus.
Heureusement, Kent Boogaart a écrit un Comportement Attaché qui ajoute cette capacité et qui est utilisé comme ceci :
<Popup b:PopupPlacement.PlacementTarget="{Binding ElementName=ContentPresenterBorder}">
<b:Popup.PreferredOrientations>
<b:PopupOrientationCollection>
<b:PopupOrientation Placement="Top" HorizontalAlignment="Center"/>
<b:PopupOrientation Placement="Bottom" HorizontalAlignment="Center"/>
<b:PopupOrientation Placement="Right" VerticalAlignment="Center"/>
<b:PopupOrientation Placement="Right" VerticalAlignment="TopCenter"/>
</b:PopupOrientationCollection>
</b:Popup.PreferredOrientations>
<!--Popup content with the ItemPresenter-->
</Popup>
Où ContentPresenterBorder
est le nom du conteneur qui contient le ToggleButton de la ComboBox.