【问题标题】:WPF set visibility of item in listbox - code behindWPF 设置列表框中项目的可见性 - 代码隐藏
【发布时间】:2023-03-31 03:37:01
【问题描述】:

我有 listBox(在后面的代码中添加),我想在 Items.Count > 4 时设置最后一项的可见性。我有一个充满按钮的列表框。

private void movingOfButtons(ListBox list, int index)
    {
        Control previousButton = (Control)list.Items.GetItemAt(list.Items.Count - 1);
        int itemCounts = ktery.Items.Count;

        indexButton = index;
        // create new buttons
        addNewButton("Sound");
        addNewButton("addSound");
        mainCycle(list);

        // this does not work - it show only messageBox
        if (itemCounts >= 4)
        {
            MessageBox.Show("" + previousButton.Name);
            previousButton.Visibility = Visibility.Collapsed;
        }

        (list).Items.RemoveAt(index);
    }

这个previousButton.Visibility 不起作用。

哪里出错了?

【问题讨论】:

  • 试试 Visibility.Hidden
  • 调用 MessageBox.Show 后,您必须单击“确定”才能继续下一步,否则 UI 线程将等待并且您将永远不会设置可见性:) :)
  • @devhedgehog 这不是解决方案......当我删除那个 MessageBox 时它也不起作用。 :) :)
  • 值得一试呵呵。我怎么知道你在干什么?您还没有发布太多关于您正在做什么的信息。向我们展示更多代码。 previousButton 是否为空?你有任何例外吗?看看你的输出窗口。

标签: c# wpf button listbox


【解决方案1】:

我发现了我的错误:

我必须“刷新”列表框中的项目.. ;)

mainCycle(list);

previousButton = (Control)list.Items.GetItemAt(list.Items.Count - 1);

        if (itemCounts >= 4)
        {
            MessageBox.Show("" + previousButton.Name);
            previousButton.Visibility = Visibility.Collapsed;
        }

【讨论】:

  • 我们都知道 mainCycle 的做法对吗?这个问题将如何帮助那些偶然发现这个线程并遇到类似可见性问题的人? Idk.. 很高兴你解决了它。
  • @devhedgehog 我只发布了重要的代码。但是好的: addNewButton 创建带有名称、索引的新按钮,并且此方法将该按钮放入全局列表中。mainCycle 只是将这些按钮从列表中放入 listBox 中……仅此而已……但我认为这并不重要。 :)
  • 因此,每次添加按钮时,您都会通过执行类似 listBox.ItemsSource = myList?那很糟。你失去了 SelectedItem 你失去了滚动位置。这就像从即将坐下的人手中夺走椅子哈哈。这意味着。你有没有想过使用 ObservableCollection?
  • 没有。我通过 Add 或 RemoveAt 和索引添加和删除正常的按钮。列表的存在还有另一个原因。但是大声笑 - 这真的是题外话。 :) :)
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多