组合的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