如何使用 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 代码隐藏在列表框中隐藏单个列表框项?的主要内容,如果未能解决你的问题,请参考以下文章