9

WPFのWinFormsからこの機能を実現する方法はありますか?

ListView.FocusedItem = ListView.Items[itemToFocusIndex]

WPF ListViewのアイテムに手動でフォーカスを設定しようとしています(選択しないでください)。System.Windows.Controlsから。ありがとう。

4

5 に答える 5

24

WPFには、キーボードフォーカスと論理フォーカスの2種類のフォーカスがあります。このリンクから、WPFでのフォーカスに関する詳細情報を入手できます。

これを行うことができます:

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

電話することも可能です

Keyboard.Focus(item); 

ListViewアイテムの位置までスクロールする場合は、次を追加します。

myListView.ScrollIntoView(item);

重要な注意:これを機能させるには、を設定する必要がありVirtualizingStackPanel.IsVirtualizing="False"ますListView。これにより、パフォーマンスが低下する可能性があります。この添付プロパティが必要な理由は、ListViewが仮想化されている場合(デフォルトでは)、ListViewItems画面に表示されていないアイテムに対しては作成されないため、がContainerFromIndex()返されるためnullです。

于 2012-07-31T19:37:07.370 に答える
0

Keyboard.FocusedElementを使用して、リストビューでフォーカスされた要素を取得できると思います。

Keyboard.FocusedElement

フォーカスされた要素を返す必要があります

于 2012-07-31T16:54:45.657 に答える
0

ListViewアイテムはUIElementsであるため、単に。を使用しますUIElement.Focus()。たとえば、listViewItem.Focus()などbutton.Focus()

于 2016-01-12T09:02:30.760 に答える
-1
//to set focus write
CollistView7.Items[TheIndItem].Selected = true; 
CollistView7.Select();
CollistView7.Items[TheIndItem].Focused = true;
//when TheIndItem is the index
于 2013-05-26T11:29:11.440 に答える
-2
    public void foucusItem( ListView.Item itemToFocusIndex){
         int count = 0; 
         foreach(ListView.Item item in YourListView){
               if(item == itemsToFocusIndex){
                     ListView.Items[count].Focus();
                     return;
               }
         count++;
         }
    }
于 2012-07-31T17:55:33.363 に答える