我有一个在列表框上使用的附加行为,如果列表只包含一个元素,它应该自动选择列表中的第一个元素。
我发现在列表更改时挂钩列表框的唯一方法是使用列表框的 itemcollections CollectionChanged 事件:
private static void ListenToItemsCollectionChange(ListBox listBox)
{
var collection = (INotifyCollectionChanged)listBox.Items;
collection.CollectionChanged += (sender, args) => SelectAndSetFocusToFirstElement(listBox);
}
现在的问题是,无法取消订阅该事件,这可能会导致多次调用SelectAndSetFocusToFirstelement( )
.
对此的正常解决方案是不使用 lambdas。但后来我会松开我的列表框,我需要它来选择第一个元素。
关于如何解决这个问题的任何建议?