WPF组合框下拉列表放置

WPF组合框下拉列表放置,wpf,combobox,drop-down-menu,location,Wpf,Combobox,Drop Down Menu,Location,我有一个ContentControl,从左到右由按钮、分区和组合框组成。我希望ComboBox下拉列表与控件的左侧对齐,而不是与ComboBox的左侧对齐。似乎找不到关于相对位置等的文档。有人处理过这个问题吗?TIA我以前也做过类似的事情-我最终从ComboBox派生,获得控件的弹出部分并使用来定位它。像这样的 class MyComboBox : ComboBox { public override void OnApplyTemplate() { base.O

我有一个ContentControl,从左到右由按钮、分区和组合框组成。我希望ComboBox下拉列表与控件的左侧对齐,而不是与ComboBox的左侧对齐。似乎找不到关于相对位置等的文档。有人处理过这个问题吗?TIA

我以前也做过类似的事情-我最终从ComboBox派生,获得控件的弹出部分并使用来定位它。像这样的

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;
    }
}

我以前也做过类似的事情——我最终从ComboBox派生,得到控件的弹出部分并使用来定位它。像这样的

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;
    }
}