組合的ItemsSource不必綁定到ObservableCollection,但它可以幫助,具體取決於你如何解決這個問題。
當單元格進入編輯模式時,ItemsSource綁定的屬性會被擊中 - 所以每次擊中getter時都可以返回一個新的項目列表。這裏是一個非常簡單的例子,給你一個想法:
public List<string> MyItemsSource
{
get
{
var myNewList = MyMasterList.ToList(); //create a (reference) copy of the master list (the items are not copied though, they remain the same in both lists)
if (PropertyA != null)
myNewList.Remove(PropertyA);
return myNewList;
}
}
所以,你所創造的東西和返回是所有可能項目的主列表的過濾版本。 LINQ在這裏對你有很大的幫助。
或者,您可以只保留一個主列表的靜態副本作爲ObservableCollection,並且只需從該靜態副本中刪除項目(當它們被選中時將其添加回來,並在未選中時將其添加回來)。您選擇哪個選項將取決於列表可以修改多少次,因爲選擇了項目以及生成列表有多複雜。過去我多次使用動態生成的列表,這是一個在大多數情況下運行良好的選項。
我只是有一個IsSelected屬性和過濾列表IsSelected = false – Paparazzi
@Blam,我不知道這是否會在我的情況下工作。我沒有在我的問題中提到它,但實際上我想隱藏或顯示基於列表中對象的整數字段的項目,如果int值爲'x',則此值不應出現在下一個的組合框中'x'行。 我認爲在這種情況下slu su族的消化能力會更好。非常感謝答覆。 – dbiagi
你在問題中說的是它不應該出現,如果它已經被使用。 – Paparazzi