WPFのWinFormsからこの機能を実現する方法はありますか?ListViewでアイテムのフォーカスを設定するWPF
ListView.FocusedItem = ListView.Items[itemToFocusIndex]
私は手動でWPFのListViewに項目のフォーカスを(選択しない)を設定しようとしています。 から.Windows.Controls。おかげさまで
WPFのWinFormsからこの機能を実現する方法はありますか?ListViewでアイテムのフォーカスを設定するWPF
ListView.FocusedItem = ListView.Items[itemToFocusIndex]
私は手動でWPFのListViewに項目のフォーカスを(選択しない)を設定しようとしています。 から.Windows.Controls。おかげさまで
を返す必要があります。 This linkは、WPFでのフォーカスに関する詳細を提供します。
あなたがこれを行うことができ、次のいずれか
ListViewItem item = myListView.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem;
item.Focus();
それはあなたもこれを追加し、アイテムの位置にListView
をスクロールしたい場合は
Keyboard.Focus(item);
を呼び出すことも可能です:
myListView.ScrollIntoView(item);
を
重要なお知らせ:これをwor kの場合は、にVirtualizingStackPanel.IsVirtualizing="False"
を設定する必要があります。これにより、パフォーマンスが低下する場合があります。この添付プロパティが必要な理由は、ListView
(デフォルトでは)が仮想化されている場合、ContainerFromIndex()
がnull
を返すように、画面に表示されない項目に対してはListViewItems
が作成されないためです。
Keyboard.FocusedElementを使用して、リストビュー内のフォーカスされた要素を取得できると思います。キーボードフォーカスと論理フォーカス -
Keyboard.FocusedElement
は、WPFでの焦点の2種類がありますフォーカスのある要素
私は集中したアイテムを得る必要はありません、私は**フォーカスを設定する必要があります**。 – jnovacho
public void foucusItem(ListView.Item itemToFocusIndex){
int count = 0;
foreach(ListView.Item item in YourListView){
if(item == itemsToFocusIndex){
ListView.Items[count].Focus();
return;
}
count++;
}
}
//to set focus write
CollistView7.Items[TheIndItem].Selected = true;
CollistView7.Select();
CollistView7.Items[TheIndItem].Focused = true;
//when TheIndItem is the index
ListViewアイテムはUIElementsなので、単にUIElement.Focus()
を使用してください。例えばlistViewItem.Focus()
またはbutton.Focus()
などとなります。
あなたのコードの背後にあるアイデアはありますが、_myListView.Items [itemIndex]としてIInputElementとして動作していません; _は_null_を返します。 ListViewの項目は私のカスタムクラスのインスタンスで、実行時にinstaceプロパティに従って適切なスタイルが選択されます。クラスは、それぞれクラスまたはインタフェースを実装することを継承しません。だから私はそれをIInputElementにキャストすることはできません... – jnovacho
@jnovacho 'UIElement'から継承したコントロールは' IInputElement'を実装しています。あなたは 'myListView.Items [itemIndex]'からどんなタイプのオブジェクトを取得しますか? –
私はそのコレクションからObjectだけを取得します。 – jnovacho