Home > Mobile >  C# WPF Combobox selection event based on Combobox list populated from text file
C# WPF Combobox selection event based on Combobox list populated from text file

Time:01-14

I have a Combobox drop down that is populated from a text file. The combobox is populated with multiple server groups. This is working fine.

servergroups.txt
Group1
Group2
Group3
       public MainWindow()
        {
            InitializeComponent();
            ComboBox2.ItemsSource = File.ReadAllLines(@"c:\temp\servergroups.txt");
        }

The problem i have is that i am also trying to populate a listbox of servers from a server text file based on what server group selected in the combobox.

group1.txt
server1
server2
server3
        private void ComboBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (((ComboBoxItem)ComboBox2.SelectedItem).Content.Equals("Group1"))
            {
                Listbox1.ItemsSource = null;
                Listbox1.Items.Clear();
                Listbox1.ItemsSource = File.ReadAllLines(@"c:\temp\Group1.txt");
                Listbox1.ScrollIntoView(Listbox1.Items[0]);
            }

I am getting the following exception when i select any item from the combobox dropdown

System.InvalidCastException: 'Unable to cast object of type 'System.String' to type 'System.Windows.Controls.ComboBoxItem'.'

thank you!

CodePudding user response:

The error message clearly says that SelectedItem is of type string.

When you assign a collection of strings to the ItemsSource property of a Selector, the SelectedItem is also a string:

if ((string)ComboBox2.SelectedItem == "Group1")
{
    Listbox1.ItemsSource = File.ReadAllLines(@"c:\temp\Group1.txt");
}

In general, the object held by the SelectedItem property is the currently selected element in the Items collection, so that the following condition is true when SelectedIndex >= 0:

selector.SelectedItem == selector.Items[selector.SelectedIndex]
  • Related