You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:15:03