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

WPF, Access combobox selected item

我有一个组合框,其中有四个静态可能的选择,如下所示

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>

我正在为使用此方法选择的每个组合框项目创建一个扩展器。

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);
}

我知道我可以访问组合框名称,但我不确定如何访问组合框项名称。我试过使用

Header = this.combobox.ComboBoxItem.Name

还有其他变体,但我没有成功。我只是想将每个扩展器的 header 变成组合框项的名称。感谢任何帮助。

你可以这样走:

    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;
    }
}

希望对您有所帮助。