我有一个在列表框上使用的附加行为,它应该自动选择列表中的第一个元素,如果列表只包含一个元素。行为中的Lambda表达式委托
,我发现勾当列表的变化,是使用列表框”列表框中的唯一途径itemcollections CollectionChanged事件:
private static void ListenToItemsCollectionChange(ListBox listBox)
{
var collection = (INotifyCollectionChanged)listBox.Items;
collection.CollectionChanged += (sender, args) => SelectAndSetFocusToFirstElement(listBox);
}
现在的问题是,从没有退订方式该事件可能导致多个调用SelectAndSetFocusToFirstelement()
。
正常的解决方案是,不使用lambdas。但是,我会放弃我的列表框,我需要选择第一个元素。
有关如何解决这个问题的任何建议?
的事件处理程序为CollectionChanged让你没有参考列表框 - 只集合。通过使用lambda,你仍然可以访问局部变量,并且可以访问作为参数传递给'ListenToItemsCollectionChage()'方法的列表框。 – Vegar
你将如何使用对来自其他地方的临时变量中存储的事件处理程序的引用? – Vegar