将焦点设置到第一个列表视图项

Set focus to the first listview item

在 WinUI3 中,我需要将焦点设置到 ListView 的第一项,以便用户可以立即使用键盘。我执行以下操作:

listView.Focus(FocusState.Programmatic);

if (listView.Items.Count > 0) 
{
    listView.SelectedIndex = 0;                                     
}

但只有列表视图获得焦点,而不是项目,我需要先单击项目,然后才能使用键盘上下移动。有什么简单的方法可以将焦点放在列表视图的第一项上吗?

由于某些原因,无法从第一次选择 ListViewItem 因此这里有一些解决此问题的方法:

ListViewItem lvi = listView.ContainerFromIndex(0) as ListViewItem;

if (lvi != null) 
{
    lvi.IsSelected = true;
    lvi.Focus(FocusState.Programmatic);
} 
else 
{
    var dispatcherQueue = DispatcherQueue.GetForCurrentThread();
    dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low,
                        () => {
                            lvi = listView.ContainerFromIndex(0) as ListViewItem;
                            if (lvi != null) {
                                lvi.IsSelected = true;
                                lvi.Focus(FocusState.Programmatic);
                            }
                        });
}