WPF ComboBox DropDown Placement
-
22-07-2019 - |
Pregunta
Tengo un ContentControl compuesto de izquierda a derecha de un botón, partición y un cuadro combinado. Quiero que el menú desplegable ComboBox se alinee con el lado izquierdo del control en lugar del lado izquierdo del cuadro combinado. Parece que no puede encontrar documentos sobre ubicación relativa, etc. ¿Alguien se ocupó de esto? TIA
Solución
He hecho algo similar antes: terminé derivando de ComboBox, obteniendo la parte emergente del control y usando CustomPopupPlacementCallback para colocarlo. Algo como esto ...
class MyComboBox : ComboBox
{
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var popup = (Popup)Template.FindName("PART_Popup", this);
popup.Placement = PlacementMode.Custom;
popup.CustomPopupPlacementCallback = placePopup;
}
private CustomPopupPlacement[] placePopup(Size popupSize, Size targetSize, Point offset)
{
var placements = new[] { new CustomPopupPlacement() };
placements[0].Point = // position the drop-down here!
return placements;
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow