【问题标题】:How to delete combobox in WPF?如何删除 WPF 中的组合框?
【发布时间】: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(蓝色按钮)。当用户单击按钮时。新组合框将与名为btnDeleteDELETE 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


【解决方案1】:

你可以试试这样的。它将删除 Combobox 和 Button 所在的 Grid。同时保持所有其他内容不变。 (我无法验证此代码,因为我现在没有 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 窗体方式更难学习,但过一段时间就会得到回报

【讨论】:

  • 谢谢您,先生!它的工作。我真的应该更加努力地学习。我是新手,所以对我来说非常艰难。谢谢你的帮助和建议:)
  • 很高兴这对您有所帮助 :) 确保将其标记为其他人可以找到的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多