C# WPF组合框:隐藏下拉列表并在单击鼠标时聚焦其他控件

C# WPF组合框:隐藏下拉列表并在单击鼠标时聚焦其他控件,c#,wpf,combobox,C#,Wpf,Combobox,通常,当ComboBox下拉菜单打开时,我需要单击两次鼠标以将焦点转移到其他控件。第一次单击将关闭下拉列表,第二次单击将焦点转移到其他控件。我需要一种方法,使重点,以其他控制只需一个鼠标点击。您知道如何在WPF中执行此操作吗?您可以这样处理combobox控件的DropDownClosed事件: private void comboBox_DropDownClosed(object sender, EventArgs e) { Point m = Mouse.GetPos

通常,当ComboBox下拉菜单打开时,我需要单击两次鼠标以将焦点转移到其他控件。第一次单击将关闭下拉列表,第二次单击将焦点转移到其他控件。我需要一种方法,使重点,以其他控制只需一个鼠标点击。您知道如何在WPF中执行此操作吗?

您可以这样处理combobox控件的DropDownClosed事件:

private void comboBox_DropDownClosed(object sender, EventArgs e)
    {
        Point m = Mouse.GetPosition(this);
        VisualTreeHelper.HitTest(this, new HitTestFilterCallback(FilterCallback),
            new HitTestResultCallback(ResultCallback), new PointHitTestParameters(m));
    }
    private HitTestFilterBehavior FilterCallback(DependencyObject o)
    {
        var c = o as Control;
        if ((c != null) && !(o is MainWindow))
        {
            if (c.Focusable)
            {
                c.Focus();
                return HitTestFilterBehavior.Stop;
            }
        }
        return HitTestFilterBehavior.Continue;
    }

    private HitTestResultBehavior ResultCallback(HitTestResult r)
    {
        return HitTestResultBehavior.Continue;
    }

这是基于提供的解决方案

您已经尝试了什么?我已经尝试覆盖OnMouseDown。我没有别的主意。