WPFのWinFormsからこの機能を実現する方法はありますか?
ListView.FocusedItem = ListView.Items[itemToFocusIndex]
WPF ListViewのアイテムに手動でフォーカスを設定しようとしています(選択しないでください)。System.Windows.Controlsから。ありがとう。
WPFのWinFormsからこの機能を実現する方法はありますか?
ListView.FocusedItem = ListView.Items[itemToFocusIndex]
WPF ListViewのアイテムに手動でフォーカスを設定しようとしています(選択しないでください)。System.Windows.Controlsから。ありがとう。
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
です。
Keyboard.FocusedElementを使用して、リストビューでフォーカスされた要素を取得できると思います。
Keyboard.FocusedElement
フォーカスされた要素を返す必要があります
ListViewアイテムはUIElementsであるため、単に。を使用しますUIElement.Focus()
。たとえば、listViewItem.Focus()
などbutton.Focus()
。
//to set focus write
CollistView7.Items[TheIndItem].Selected = true;
CollistView7.Select();
CollistView7.Items[TheIndItem].Focused = true;
//when TheIndItem is the index
public void foucusItem( ListView.Item itemToFocusIndex){
int count = 0;
foreach(ListView.Item item in YourListView){
if(item == itemsToFocusIndex){
ListView.Items[count].Focus();
return;
}
count++;
}
}