简体   繁体   中英

WPF, Access combobox selected item

I have a combobox that has four static possible selections, shown below

MainWindow.xaml

<Grid>
    <ComboBox Name="combobox" IsEditable="True" SelectionChanged="ComboBox_SelectionChanged" Text="Default Text"
        <ComboBoxItem Name="ComboBoxItem1">1</ComboBoxItem>
        <ComboBoxItem Name="ComboBoxItem2">2</ComboBoxItem>
        <ComboBoxItem Name="ComboBoxItem3">3</ComboBoxItem>
        <ComboBoxItem Name="ComboBoxItem4">4</ComboBoxItem>
    </ComboBox>
    <StackPanel Name="dock">
    </StackPanel>
</Grid>

I'm creating an expander for each combobox item that is selected using this method.

MainWindow.xaml.cs

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

    var itemIndex = combobox.SelectedItem;

    Expander expander = new Expander { Header = this.combobox.Name };
    dock.Children.Add(expander);
}

I know I can access the combobox name, but I'm not sure how to access the comboboxitem name. I've tried using

Header = this.combobox.ComboBoxItem.Name

And other variants of that, but I've had no success. I'm just trying to make the header of each expander into the name of the comboboxitem. Any help is appreciated.

you can go like this:

    private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    { 
       var selectedItem= combobox.SelectedItem as ComboBoxItem; 
       if(selectedItem!=null)
       {
           string name = selectedItem.Name;
           Expander expander = new Expander { Header = name };
           dock.Children.Add(expander);
       }
    }
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var itemIndex = combobox.Text;
    string name = (combobox.SelectedItem as ComboBoxItem).Name;
    var obj = dock.FindName("Exp_Name");
    if (obj == null)
    {
        Expander expander = new Expander();
        expander.Header = name;
        expander.Name = "Exp_Name";
        dock.Children.Add(expander);
        this.RegisterName(expander.Name, expander);
    }
    else
    {
        var element = obj as Expander;
        element.Header = name;
    }
}

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM