以编程方式清除WPF ComboBox中的选择

时间:2009-03-09 17:48:13

标签: c# wpf

我在WPF中有一个ComboBox,其ItemsSource以编程方式设置为列表。我如何在事件处理程序中清除选择?我试过了:

comboBox.SelectedIndex = -1;
comboBox.SelectedItem = null;
comboBox.SelectedValue = null;
comboBox.SelectedValue = "";

它们都没有任何效果。

6 个答案:

答案 0 :(得分:21)

comboBox.SelectedIndex = -1;适合我。

你在事件处理程序中做了什么吗?你在使用数据绑定吗?

答案 1 :(得分:5)

comboBox.SelectedIndex = -1;

是要走的路。我不知道为什么它不适合你;也许SelectedIndexChanged的事件处理程序会更改值?

答案 2 :(得分:3)

我发现我还需要添加:

comboBox.Text = "";

让文字清除

答案 3 :(得分:1)

我希望清除另一个ComboBox的{​​{1}}事件中的DropDownClosed。因此,我在第一个ComboBox ComboBox事件

中使用了以下代码
DropDownClosed

答案 4 :(得分:0)

在下面的示例中,我展示了它对我的工作方式,这适用于用户控件中的ComboBox:

用户控件中的组合框:

<ComboBox x:Name="OFFSE_INI_CMBX" HorizontalAlignment="Left" Margin="26,106,0,0" VerticalAlignment="Top" Height="20" Width="100" DropDownClosed="OFFSE_INI_CMBX_DropDownClosed">
        <ComboBoxItem x:Name="NV" Content="           NV" ToolTip="Sub Command &#10;Tooltip 1" Height="20" Selected="NV_Selected"></ComboBoxItem>
    </ComboBox>

有效功能

private void OFFSE_INI_CMBX_DropDownClosed(object sender, EventArgs e)
    {
        this.OFFSE_INI_CMBX.SelectedIndex = -1;
        this.OFFSE_INI_CMBX.Text = "";
    }

答案 5 :(得分:0)

ComboBox.SelectedIndex = -1对我不起作用,可能是因为我在自定义ComboBox中使用了自定义ControlTemplate吗?无论如何,重置ItemsSource确实可以。我从行为中称呼这个。

            var items = comboBox.ItemsSource;
            comboBox.ItemsSource = null;
            comboBox.ItemsSource = items;