我有一個在列表框上使用的附加行爲,它應該自動選擇列表中的第一個元素,如果列表只包含一個元素。行爲中的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