我有一个组合框,有四个静态可能的选择,如下所示
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
其他变种,但我没有成功。我只是试图将每个扩展器的标题变成组合框的名称。任何帮助表示赞赏。
答案 0 :(得分:3)
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);
}
}
答案 1 :(得分:2)
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;
}
}
希望这有帮助。