如上所述,我已经根据后面的代码动态创建了ComboBox
。
以下代码(此代码位于BtnAddComboBox_Click
内部)
Grid grid = new Grid();
comboBox = new ComboBox();
comboBox.ItemsSource = salesman2;
comboBox.Name = "cbSalesman";
Button button = new Button();
button.Width = 50;
button.Name = "btnDelete";
button.Height = 30;
button.Background = Brushes.Transparent;
button.BorderBrush = Brushes.Transparent;
button.Click += new RoutedEventHandler(btnDeleteCB_Click);
grid.Children.Add(comboBox);
grid.Children.Add(button);
stackPanel.Children.Add(grid);
我的XAML上有一个Button
名称AddComboBox
(蓝色按钮)。当用户单击按钮时。新组合框将与旁边的名为DELETE BUTTON
的{{1}}一起添加。因此,这意味着每个comboBox都有其自己的删除按钮。它没有最大数量btnDelete
,因此只要用户单击按钮,它将继续添加新的ComboBox。
问题是当我单击ComboBox
时。它将删除所有添加的comboBox(因为我猜它具有相同的名称)
这是我的删除方法:
btnDelete
我要的是单击private void btnDeleteCB_Click(object sender, RoutedEventArgs e)
{
StackPanel stackPanel = FindChildControl<StackPanel>(this,"spSalesmanCombobox") as StackPanel;
stackPanel.Children.Remove(comboBox);
}
时,只有旁边的btnDelete
会被删除。我怎样才能做到这一点 ?有可能做到吗?
我要删除ComboBox
本身。而不是其中的选定项目。
答案 0 :(得分:1)
您可以尝试类似的方法。它将删除其中包含“组合框”和“按钮”的网格。同时不影响其他所有网格。 (由于我目前没有IDE,因此我无法验证此代码)
private void btnDeleteCB_Click(object sender, RoutedEventArgs e)
{
Grid grd = (sender as Button).Parent as Grid; //sender is button -> Parent is your grid
stackPanel.Children.Remove(grd); //remove that grid from the Stackpanel that contans them all
}
通常,我想提到WPF专为与MVVM一起使用而设计,您无需像这样操作gui。它比使用后面的代码的Windows窗体方式更难学习,但过一会儿就会得到回报