技巧似乎是显式地将焦点设置为ListView中第一个项的项容器。我找到了一个很好的解释
here
.
该博客文章的简短摘要:
因为在创建ListView之后这些项不直接可用,所以必须在后台生成所有项之后才进行聚焦。所以,连接到
StatusChanged
ItemContainerGenerator
:
Persons.ItemContainerGenerator.StatusChanged += ItemContainerGenerator_StatusChanged;
在事件处理程序中,在生成所有内容后设置焦点:
private void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
if (Persons.ItemContainerGenerator.Status == System.Windows.Controls.Primitives.GeneratorStatus.ContainersGenerated)
{
int index = Persons.SelectedIndex;
if (index >= 0)
((ListViewItem)Persons.ItemContainerGenerator.ContainerFromIndex(index)).Focus();
}
}
这个解决方案并不像我希望的那么简单,但它对我很有效。