2010-11-30 65 views
0

我想從我創建的列表框中刪除一些對象,並且出於某種原因ListBox.Items.IsReadOnly爲true。爲什麼ListBox.Items.IsReadOnly = true? (F#/ Silverlight)

以下呼叫不起作用:

myListBox.Items.Add("whatever") 
myListBox.Items.Add("stuff") 
myListBox.Items.Remove("whatever") 

我得到一個異常:

{System.InvalidOperationException: Operation not supported on read-only collection. 
    at System.Windows.Controls.ItemCollection.RemoveImpl(Object value) 
    at System.Windows.Controls.ItemCollection.RemoveInternal(Object value) 
    at System.Windows.PresentationFrameworkCollection`1.Remove(T value) 

我可以設置ListBox.ItemsSource,但.Items工作要容易得多。我創建這樣的列表框:

let mutable myListBox= new ListBox() 

任何想法/建議將不勝感激。謝謝。

回答

3

我不確定F#的語法,但你應該設置ListBox.ItemsSource。

如果您創建ObservableCollection,然後將其設置爲ItemsSource,則可以添加和刪除集合中的項目,並且列表框將自動更新。

+0

我會嘗試......這很奇怪,因爲在C#Items.Remove/Items.RemoveAt似乎工作:http://stackoverflow.com/questions/1400091/search-and-remove-item-from- listbox – 2010-11-30 21:07:51

+0

@Mike - 同意這很奇怪,但我對F#不夠熟悉,不能說出爲什麼它不同。 – ChrisF 2010-11-30 21:10:11

2

下面的代碼工作正常,我:

open System.Windows.Controls 
let l = ListBox() 
l.Items.Add("An item") 
l.Items.Add("Another item") 
l.Items.Remove("An item") 

你創建列表框之間做別的事情並嘗試添加項目嗎?

相關問題