首页 文章

C#WPF - ComboBox

提问于
浏览
3

我正在开发一个内部使用ComboBox的自定义控件 .

我的问题是当ComboBox聚焦并且下拉打开时,它似乎聚焦整个控件 . 我想自动突出显示drop drown中的第一项,但是现在你必须按下向下键才能这样做 .

有没有办法以编程方式突出显示ComboBox中的第一项(将只读IsHighlighted属性设置为true)?我相信ComboBox中的IsHighlight概念与Focus不同 . 另外,我通过ItemsSource绑定,所以我没有引用ComboBoxItems .

2 回答

  • 3

    这里's a way of doing it, although it might not cover all the cases - but you didn' t提供了太多的细节(例如,当已经选择了一个元素时会发生什么?你还想选择列表中的第一个元素吗?下面的代码只有当没有选择时才会突出显示第一个元素组合框 . 为了使它始终选择第一个元素,也应该处理 DropDownOpened 事件 .

    public MainWindow()
    {
        InitializeComponent();
        combobox.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);
    }
    
    void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
    {
        if (combobox.ItemContainerGenerator.Status == System.Windows.Controls.Primitives.GeneratorStatus.ContainersGenerated)
        {
            (combobox.ItemContainerGenerator.ContainerFromIndex(0) as ComboBoxItem).Focus();
        }
    }
    

    (希望我理解正确,这就是你想要做的) .

  • 0

    它可能不是您正在寻找的但是如果您设置mycombo.SelectedIndex = 0然后mycombo.IsDropDownOpen = True它应该打开它并选择第一个项目 . 它将突出显示,但也将是组合框中的值 . 虽然我不确定这不是预期的效果 .

相关问题