WinUI3如何将焦点设置到ListView的第一个项以支持直接键盘操作
WinUI3 ListView设置焦点到第一个项的实现方法
你现有代码的问题是仅设置了ListView容器的焦点,SelectedIndex仅能标记选中状态,不会自动把焦点传递到对应的列表项控件上。
可参考以下实现:
// 确保ListView已有加载完成的项 if (listView.Items.Count > 0) { // 选中第一项 listView.SelectedIndex = 0; // 滚动到第一项(适配虚拟化场景,避免拿不到项容器) listView.ScrollIntoView(listView.Items[0]); // 获取第一个项的ListViewItem容器 var firstListItem = listView.ContainerFromIndex(0) as ListViewItem; // 直接给列表项设置编程焦点 firstListItem?.Focus(FocusState.Programmatic); }
注意事项:
- 不要在页面构造函数、
OnNavigatedTo等UI还未完成渲染的生命周期阶段直接调用,建议把逻辑挂载到ListView的Loaded事件中,避免ContainerFromIndex返回null。 - 如果使用了异步加载Items的逻辑,需要在Items加载完成的回调中执行上述代码。
内容的提问来源于stack exchange,提问作者demonplus
相关产品推荐
相关产品推荐

