2010-11-01 11 views
0

如果我在更改ListBoxItemsSource屬性時選擇了一個項目,我得到IndexOutOfRange異常,因爲SelectedIndex屬性在選擇項目時設置。如果在ListBox中未選擇任何項目,則不會引發異常,但即使在更改ItemsSource之前將SelectedItem屬性設置爲null,如果選擇某個項目,SelectedIndex屬性仍具有值,但仍會發生異常。更改列表框的ItemsSource屬性,當選擇項目時,會導致IndexOutOfRange異常

有沒有針對此問題的解決方案或解決方法?

編輯:下面是示例代碼,因爲這個問題只發生,如果我在LINQ應用Contains過濾器對象表達和項目在列表框中選擇... MYLIST是CLR對象的List<> ...

lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1); 

工作正常。這種改進的LINQ查詢也能正常工作(如果沒有選中的項),但如果選擇了一個項目,我得到IndexOutOfRangeException

lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1 && i.DisplayName.Contains(someString)); 

如果我重定向這個LINQ查詢到VAR或CLR對象的列表查詢工作正常,但當我嘗試使它成爲我的ListBox的ItemsSource時,我得到了異常(即使我使用這個var或我的ListBox的CLR對象ItemsSource的列表來代替)。

+0

你能寫異常跟蹤! – Homam 2010-11-01 21:48:03

回答

1

只需設置SelectedIndex爲-1


編輯:好的,請嘗試改爲:

listBox.ClearValue(Selector.SelectedIndexProperty); 
+0

嘗試過,但它沒有工作,我得到該行上的IndexOutOfRange異常...有趣的是,只要沒有選擇一個項目SelectedIndex = -1不會引發異常。 – 2010-11-01 21:59:05

+0

查看我的更新回答 – 2010-11-01 22:02:48

+0

這也會產生IndexOutOfRangeException。 – 2010-11-01 22:14:21

相關問題