2011-07-26 110 views
2

如何删除组合框项目?我试过这个代码,但它不起作用。从组合框中移除组合框项目WPF

private void btnAdd_Click(object sender, RoutedEventArgs e) 
    { 
foreach (var item in cbRooms.Items) 
       { 
        if (((ComboBoxItem)item).Content.ToString() == cbRooms.Text.ToString()) 
        { 
         cbRooms.Items.Remove(((ComboBoxItem)item).Content.ToString()); 
        } 
       }} 
+0

你是否在“Remove”行中添加了一个断点,并确认它是否被实际调用,即“if”条件实际上是否为真? – Heinzi

+0

是它的计算结果为true –

+2

为什么不直接将ComboBox绑定到某个集合并从集合本身中移除一个项目? –

回答

4

而不是试图删除一个字符串尝试:

cbRooms.Items.Remove((ComboBoxItem)item)) 
1

尝试删除ComboBoxItem而不是:

(ComboBoxItem)item).Content.ToString() 

尝试:

(item) 

您可能还需要刷新组合框控件,你删除的项目后:

cbRooms.Items.Refresh(); 

UPDATE

你可以尝试什么kzen在OP的评论中说。使用List<ComboBoxItem>来存储您的项目,并在List上执行添加/删除操作。然后在列表绑定到ComboBox

cbRooms.ItemsSource = comboBoxItemList; 

然后当你这样做的List致电您的操作的刷新:

cbRooms.Items.Refresh(); 
+0

你可以尝试什么kzen说,并使用ItemsSource属性将您的组合框绑定到一个ComboBoxItems列表。对列表进行更改,并在完成后调用cbRoom.Items.Refresh()。更新答案以表达这一点。 –