使用WPF组合框时出现运行时错误

本文关键字:运行时错误 WPF 组合 使用 | 更新日期: 2023-09-27 17:59:46

我想做的是在一个组合框中创建一个特定的字符串作为selectedindex。组合框的内容是目录中文件的文件名。这是一个可编辑的组合框。所以我做了

private void InitComboBoxProfiles()
{
    string appDataPath1 = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
    string configPath1 = appDataPath1 + "/LWRF/ReaderProfiles";
    string[] files = Directory.GetFiles(configPath1);
    foreach( string fn in files)
    {
        ComboBoxProfiles.Items.Add(fn);
    }
    int index = -1;
    foreach (ComboBoxItem cmbItem in ComboBoxProfiles.Items) //exception thrown at this line
    {
        index++;
        if (cmbItem.Content.ToString() == "Default.xml")
        {
            ComboBoxProfiles.SelectedIndex = index;
            break;
        }
    }
}

例外:

无法将System.String类型的对象强制转换为System.Windows.Controls.ComboBoxItem

我如何实现我的目标?谢谢saroj

使用WPF组合框时出现运行时错误

由于组合框项目是字符串,您可以简单地将SelectedItem属性设置为所需的字符串:

ComboBoxProfiles.SelectedItem = "Default.xml";

请注意,这将自动将SelectedIndex属性设置为正确的值,因为SelectedItemSelectedIndex将始终保持同步。

ComboBox项目的类型为string。将您的代码更改为:

foreach (string cmbItem in ComboBoxProfiles.Items) 
    {
        index++;
        if (cmbItem == "Default.xml")
        {
            ComboBoxProfiles.SelectedIndex = index;
            break;
        }
    }

比循环更好:

ComboBoxProfiles.SelectedIndex = ComboBoxProfiles.Items.IndexOf("Default.xml");