我有一個綁定到ObservableCollection ItemsSource的AutoCompleteBox,我通過查詢domainservice中的實體來自己過濾。 我使用了從Jeff Wilcox博客的webservice調用填充的場景,通過將PopulatingEventArgs.Cancel設置爲True,並且當我的集合準備就緒時,我在ACB上調用PopulateComplete()。重新打開Silverlight AutoCompleteBox彈出窗口,無需從webservice重新加載建議
我的目標是重新打開鼠標懸停(或點擊)上的下拉菜單,但不需要重新從Web上重新載入所有數據。我在Stackoverflow上發現了一個問題,答案是將IsDropDownOpen設置爲True。但在這種情況下,ACB人口再次啓動,另一個呼叫轉到網絡服務。
當然,當用戶開始輸入時,應該再次進行過濾。 (例如,你輸入「ric」,框中顯示「rice」和「ricin」,你選擇大米,但是你改變了主意並想從同一個集合中選擇另一個,可以說「ricin」。如果你已經在內存中包含「ric」的建議,不需要再次加載它們。)
我發現了一種替代IsDropDownOpen的替代方法,我只是簡單地調用PopulateComplete()方法。這和我想要的完全一樣,但有一點失敗:在我的ACB失去焦點後,下拉不會在鼠標懸停時再次打開。即使當我點擊回到acb文本框。
那麼有沒有解決這個問題,或者有人知道爲什麼當ACB第一次聚焦時,PopulateComplete()只會重新打開下拉菜單?或者這只是我的運氣,調用此方法重新打開下拉列表,而應該使用IsDropDownOpen屬性(afaik這將是唯一可能的一些標誌,指示它是由我的鼠標懸停觸發的假填充事件和我應該調用PopulatingEventArgs.Cancel後立即PopulateComplete。但我沒有得到它,如果這可能工作(還沒有嘗試過),爲什麼不簡單時調用PopulateComplete)?