如何设置对列表框项目的关注?

时间:2014-06-08 20:47:17

标签: c# wpf xaml

我有一个如下定义的列表框:

var listBox = new ListBox();
listBox.Items.Add(1);        
listBox.Items.Add(2);
listBox.Items.Add(3);

我想将焦点直接设置到列表框中的项目。

如果我这样做:

listBox.SelectedIndex = 0;
listBox.Focus();

焦点设置为整个listBox,所以如果我按向下箭头将选择移动到下面的项目,我必须按两次箭头。第一次焦点从整个listBox跳转到第一个项目,然后当我再次按箭头时,选择最终跳下来。

我想将焦点直接设置为第一项,因此我不必按两次箭头。

3 个答案:

答案 0 :(得分:9)

var listBoxItem = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromItem(listBox.SelectedItem);
listBoxItem.Focus();

答案 1 :(得分:2)

这是一个类似的(如果不相等)问题Setting focus on a ListBox item breaks keyboard navigation

代码(我不会弄乱WPF所以我不能保证这个有用,但它在我链接的线程上被接受,所以它可能):

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    listBox.Focus();
    listBox.SelectedIndex = 0;
    ((ListBoxItem)listBox.SelectedItem).Focus();
}

答案 2 :(得分:0)

您不能在列表框项目上使用Focus。()。但是,您可以选择与要执行的操作几乎相同的项目。 listbox.SelectedIndex = 0;