2013-10-14 31 views
4

如何清除WPF中的組合框?我曾嘗試這樣的代碼:清除WPF中的組合框

private void btClear1_Click(object sender, RoutedEventArgs e) 
    { 

     txtID.Text = String.Empty; 
     this.cbType.SelectedItem = -1; 
    } 
+3

cbType.Items.Clear? – Fred

+2

如清除所有項目一樣清除,或清除選項中的清除項目? –

+0

清除選擇 – user2631662

回答

2

要清除選擇集中的SelectedIndex不是SelectedItem

cboType.SelectedIndex = -1; 

您可以設置SelectedItemSelectedValue,但將其更改爲null而不是-1(這些指向的對象不是整數)。

cboType.SelectedItem = null; 
+0

當我嘗試這個時得到:對象引用未設置爲對象的實例。在cbType_SelectionChanged - – user2631662

+1

@ user2631662更改您的'SelectionChanged'事件檢查爲null之前,它試圖做的事情組合框選擇項 –

+0

我怎麼能這樣做 – user2631662

4

cbTypion.SelectedItem = -1清除選擇 cbType.Items.Clear()清除所有項目

+0

標準的WPF組合框沒有任何叫做ClearSelection()的東西。可能來自ASP或其他? –

+0

@KevinDiTraglia我糾正!自從我開發WPF以來,這已經有一段時間了。是的,它在ASP.NET中可用。答案已更新。 – Fred

+0

它確實取決於ComboBox是通過添加一個'ComboBoxItem'來填充的 - 無論是在XAML還是動態的 - 或者它是通過綁定到'ItemsSource'來填充的。如果使用後者,則不能執行'cbType.Items.Clear()' - 您將得到:'在ItemSource正在使用時操作無效。改爲使用ItemsControl.ItemsSource訪問和修改元素。 – vapcguy

3

您可以通過在XAML頁面中進行綁定來重置組合框。

例如,在XAML頁面,組合框領域:

text={Binding viewmodelobject Name.property Name} 

然後在ViewModelPage

viewmodelobject Name.property Name=""; 
1

共清理箱內物品
讓Google,因爲標題是誤導,如果我們正在談論清除箱子中的物品,我已經看到幾個答案,說使用cbType.Items.Clear()。這取決於物品是如何加載的。您可以將它們硬編碼到XAML中,在運行時動態添加它們,使用一種數據綁定和/或將它們加載到.ItemSource。除了後者的情況,它將適用於所有人。

當您使用.ItemSource加載通過DataTable的DefaultViewComboBox,例如,你不能簡單地做cbType.Items.Clear()。由於填充下拉菜單的方法這個問題是不包括在內,我認爲,當你設置.ItemSource的,你必須做到:

cbType.ItemsSource = null;

代替。否則,如果您嘗試cbType.Items.Clear()您將獲得:

Operation is not valid while ItemSource is in use. Access and modify 
elements with ItemsControl.ItemsSource instead 


清除所選項目
我回去,看到了OP的評論,稱願望是明確的選擇,而不是框。爲此,其他答案表示爲:

cbType.SelectedIndex = -1; 
cbType.Text = ""; // I've found the first line does this for me, as far as appearances, but found other postings saying it's necessary - maybe they were using the property and it wasn't getting cleared, otherwise