Set Item Focus in ListView WPF

2019-01-07 23:11发布

is there any way to accomplish this functionality from WinForms in WPF?

ListView.FocusedItem = ListView.Items[itemToFocusIndex]

I'm trying to manually set focus (not select) on item in WPF ListView. From System.Windows.Controls. Thanks.

5条回答
男人必须洒脱
2楼-- · 2019-01-07 23:14

I believe you can use Keyboard.FocusedElement to get the focused element in the listview.

Keyboard.FocusedElement

should return the focused element

查看更多
爷、活的狠高调
3楼-- · 2019-01-07 23:18

ListView items are UIElements, so simply use UIElement.Focus(). e.g., listViewItem.Focus() or button.Focus() and so on.

查看更多
我命由我不由天
4楼-- · 2019-01-07 23:21

There are two types of focus in WPF - Keyboard Focus and Logical Focus. This link can give you more information about focus in WPF.

You can either do this:

ListViewItem item = myListView.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem;
item.Focus();

It's also possible to call

Keyboard.Focus(item); 

If you also want to scroll the ListView to the item's position, add this:

myListView.ScrollIntoView(item);

IMPORTANT NOTE: For this to work, you will need to set VirtualizingStackPanel.IsVirtualizing="False" on your ListView, which may cause it to perform slower. The reason this attached property is required is that when the ListView is virtualized (which it is by default), the ListViewItems aren't created for items that aren't displayed on the screen, which will cause ContainerFromIndex() to return null.

查看更多
聊天终结者
5楼-- · 2019-01-07 23:27
    public void foucusItem( ListView.Item itemToFocusIndex){
         int count = 0; 
         foreach(ListView.Item item in YourListView){
               if(item == itemsToFocusIndex){
                     ListView.Items[count].Focus();
                     return;
               }
         count++;
         }
    }
查看更多
迷人小祖宗
6楼-- · 2019-01-07 23:38
//to set focus write
CollistView7.Items[TheIndItem].Selected = true; 
CollistView7.Select();
CollistView7.Items[TheIndItem].Focused = true;
//when TheIndItem is the index
查看更多
登录 后发表回答