如何使用 wpf 代码隐藏在列表框中隐藏单个列表框项?

Posted

技术标签:

【中文标题】如何使用 wpf 代码隐藏在列表框中隐藏单个列表框项?【英文标题】:How do you hide a single listboxitem in a listbox using wpf codebehind? 【发布时间】:2019-12-10 04:46:15 【问题描述】:

我正在创建一个包含笔记的list box。当一个注释被选中并双击时,它会打开一个编辑表单。这里有一个归档笔记的选项。归档笔记后,它不应在原始表单上可见。

我尝试了几件事,如下所示。我似乎找不到拥有单个项目可见性的属性。

listBox.SelectedItem = Visibility.Collapsed;
listBox.SelectedItem.Visibility.Collapsed;

但是它们不起作用。 任何建议表示赞赏!

【问题讨论】:

单击列表框项时如何打开表单?您可以将 listboxitem 的实例传递给表单,然后从那里告诉它在用户归档它时折叠。 第二个表单在双击列表框上的项目后打开。 【参考方案1】:

尝试以下方法:

((ListBoxItem)listBox.SelectedItem).Visibility = Visibility.Collapsed;

listBox.SelectedItem 将项目作为对象返回。您需要将此类型强制转换为 ListBoxItem 对象,它允许您访问列表框项的所有不同属性。

希望这对您有所帮助/有用:)

* 编辑 *

堆栈溢出线程typecasting in C# 应该有助于解释我所说的强制转换的意思。我也会尝试将该线程的答案与这个问题联系起来。

强制转换通常是告诉编译器虽然它只知道一个值是某种通用类型,但你知道它实际上是一种更具体的类型。例如:

// As previously mentioned, SelectedItem returns an object
object x = listBox.SelectedItem;

// We know that x really refers to a ListBoxItem so we can cast it to that.
// Here, the (ListBoxItem) is casting x to a ListBoxItem. 
ListBoxItem y = (ListBoxItem)x;

//This allows us to call the different methods and properties of a listbox item:
y.Visibility = Visibility.Collapsed;

//In my original answer I combined these three lines into one

希望这有助于更详细地解释答案,还有很多资源可以帮助解释 C# 中的类型转换和对象,这要好得多!

【讨论】:

如何将其转换为 ListBoxItem? 对不起,我意识到我没有在回答中说得特别清楚,这是我第一次尝试在这里回答问题!我将编辑我的答案以使其更清楚。以下堆栈溢出问题应该有助于更详细地解释强制转换:***.com/questions/1339482/typecasting-in-c-sharp 感谢 Ben 感谢您的帮助! :) 我最终修改了我的 SQL 代码,以便列表框不会填充存档的注释。 啊,好吧,这也是个好主意,至少您希望知道这一点,以备将来参考,以防问题再次出现:)

以上是关于如何使用 wpf 代码隐藏在列表框中隐藏单个列表框项?的主要内容,如果未能解决你的问题,请参考以下文章

从中选择项目后如何隐藏列表框?

如何在 WPF 列表框中添加标题

使用多值控制源隐藏组合框中的值

WPF中combobox显示多列的下拉框

WPF 从列表框中拖动项目并放入文本框中

使用列表框搜索算法