リストボックスで使用される動作が添付されています。リストに要素が1つしか含まれていない場合、リストの最初の要素が自動的に選択されます。
リストが変更されたときにリストボックスをフックする唯一の方法は、リストボックスの itemcollections CollectionChanged イベントを使用することです。
private static void ListenToItemsCollectionChange(ListBox listBox)
{
var collection = (INotifyCollectionChanged)listBox.Items;
collection.CollectionChanged += (sender, args) => SelectAndSetFocusToFirstElement(listBox);
}
ここでの問題は、イベントのサブスクライブを解除する方法がないことです。これにより、 が複数回呼び出される可能性がありSelectAndSetFocusToFirstelement( )
ます。
これに対する通常の解決策は、ラムダを使用しないことです。しかし、最初の要素を選択するために必要なリストボックスが失われます。
これを解決する方法について何か提案はありますか?