简体   繁体   English

WPF,访问组合框选择的项目

[英]WPF, Access combobox selected item

I have a combobox that has four static possible selections, shown below 我有一个组合框,有四种静态可能的选择,如下所示

MainWindow.xaml 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 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. 希望这可以帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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