WPF - 组合框项目正在重复

时间:2017-04-07 11:11:41

标签: c# wpf combobox

我正在创建WPF应用程序,在我的设置面板中,我有几个标签,文本框,组合框和两个按钮(保存)和(取消)。

的Xaml

<ComboBox x:Name="myCombobox" Grid.Column="1" Margin="18,372,4,0" VerticalAlignment="Top" Height="26" SelectionChanged="MyCombobox_SelectionChanged" />

我已经在我的组合框中添加了项目:

myCombobox.Items.Add("Test1");
myCombobox.Items.Add("Test2");
myCombobox.Items.Add("Test3");
foreach (var item in myCombobox.Items)
    if (item.Equals(Properties.Settings.Default.MyCombobox))
        myCombobox.SelectedItem = item;

并添加了SelectionChanged事件。这是它的外观:

private void MyCombobox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (myCombobox.SelectedItem.ToString().Equals("Test1"))
    {
        testGrid.Visibility = Visibility.Visible;
    }
    else if (myCombobox.SelectedItem.ToString().Equals("Test2") || myCombobox.SelectedItem.ToString().Equals("Test3"))
    {
        testGrid.Visibility = Visibility.Hidden;
    }
}

当我单击“取消”按钮并重新启动我的设置面板时,我的组合框的项目会重复。 (相同的值两次)。

我试图通过添加取消按钮点击事件

来防止这种情况发生
myCombobox.Items.Clear();

但此时存在另一个问题(myCombobox.SelectedItem为null),我收到此错误:

  

发生了'System.NullReferenceException'类型的异常   IdentificationStation.exe但未在用户代码中处理

如何防止组合框项目被复制?或者我应该做MyCombobox_SelectionChanged其他的帮助吗?

2 个答案:

答案 0 :(得分:1)

你能避免吗

  

&#39; System.NullReferenceException&#39;

通过测试textView!.delegate = self 上的myCombobox.SelectedItem是否为空?

MyCombobox_SelectionChanged

我不认为这样做是不好的方式。

答案 1 :(得分:-2)

使用此检查可以停止添加重复项目:

if(!myComboBox.Items.Contains("item"))
{
    myComboBox.Items.Add("item");
}