所以我有一個List<T>
,我綁定我的ComboBox
到BindingSource
。工作正常,沒問題。現在我需要添加一個項目到我的ComboBox
列表中不可用(並且我無法修改列表的內容)。下面的方案出現在我的腦海裏:將組合框綁定到兩個源
- 創建一個原始列表的副本,並在綁定之前再添加一個項目。
- 通過LINQ創建兩個列表的聯合(第二個只有一個項目),然後讓我的BindingSource監視聚合列表。
- 手動添加項目到組合框,然後監視列表中的更改。
現在我不想去第三個選項,失去約束優勢。第一個選項不起作用,因爲新創建的列表未鏈接到原始列表,因此不會更新。通過LINQ合併兩個列表也會創建一個獨立的列表,我猜。
所以我在這裏尋找的是我所說的AggregateBindingSource
,它會將一個或多個List<T>
s作爲它的DataSource並自動更新我的ComboBox。
還是有人有更好的主意嗎?
從現有列表(例如使用構造函數)創建新列表並不以任何方式將新列表鏈接到舊列表。它僅創建原始列表的淺拷貝(即使使用引用)。原始列表中的任何更改都不會影響新列表的內容。 – dotNET
ofc他們沒有真正聯繫,但如果你在兩個列表中存儲相同的引用,那麼他們訪問相同的元素。 因此,如果您刪除或插入一個列表中,您必須更新。但是如果你只是改變元素的一些成員,他們將在兩個列表中更新。 –
正確,但你只是建議案件號。 3我上面發佈了,我想避免,因爲這個列表將要經歷很多插入/刪除操作,所以綁定真的很方便。 – dotNET