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

¿Fue útil?

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
scroll top