【发布时间】:2019-07-05 15:16:51
【问题描述】:
正如上面提出的问题,我已经从后面的代码中动态创建了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(蓝色按钮)。当用户单击按钮时。新组合框将与名为btnDelete 的DELETE BUTTON 一起添加到它旁边。所以这意味着每个组合框都有自己的删除按钮。它没有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会被删除。我怎样才能做到这一点 ?有可能吗?
我想删除 ComboBox 本身。不是其中的选定项目/项目。
【问题讨论】:
-
你真的应该考虑深入研究 MVVM
-
“删除 ComboBox 本身” - 那么你必须以某种方式提供此信息。例如。使用您在添加按钮以指向引用的组合框时设置的附加属性。更好的方法确实是 MVVM,您不再使用控件进行操作,而是使用视图模型的集合,这将很容易添加/删除/可视化。
-
@thatxx 两个 cmets 都是很好的建议。将这些视图模型添加到集合中,并具有一个 UserControl 来表示您在后面的代码中手动添加的可视元素。一旦您对此有所了解,MVVM 方法就会开始变得有意义。
标签: c# wpf combobox code-behind