当前位置: 首页 > 知识库问答 >
问题:

如果集合中有一些需要隐藏的项,则WPF中ListBox的替代样式不按预期工作

壤驷宏才
2023-03-14

我正在尝试将我的收藏绑定到列表框。集合包含一些要隐藏的项,并根据特定条件显示这些项。但是当我这样做时,替代样式没有正确应用。

例如:案例1:在所有项目都可见的情况下,我得到如下输出:Item1(灰色)Item2(白色)Item3(灰色)Item4(白色)Item5(灰色)Item6(白色)Item7(灰色)

案例2:在项目2被隐藏的地方,我得到的输出是:项目1(灰色)项目3(灰色)项目4(白色)项目5(灰色)项目6(白色)项目7(灰色)

如何在不重新绑定集合的情况下解决此问题?

共有1个答案

梁豪
2023-03-14

您应该使用CollectionViewSource过滤项目,而不是隐藏项目(可能在ListBoxItem控制模板或ListBoxItemTemplate中)。

这是因为从技术上讲,这些项目仍然存在——您无法看到它们,但列表框可以看到它们。

有关筛选的详细信息,请参阅此链接。http://wpftutorial.net/DataViews.html

要筛选集合视图,可以定义一个回调方法,该方法确定该项是否应该是视图的一部分。该方法应具有以下签名:bool Filter(对象项)。现在,将该方法的委托设置为CollectionView的Filter属性,就完成了。

ICollectionView _customerView = CollectionViewSource.GetDefaultView(customers);
_customerView.Filter = CustomerFilter

private bool CustomerFilter(object item)
{
    Customer customer = item as Customer;
    return customer.Name.Contains( _filterString );
}
 类似资料:
  • 问题内容: 我试图弄清楚如何隐藏不需要的东西。我的意思是说我正在建立一个网站,并且有一个主要区域将显示帖子,并且如果内容未超过当前宽度,我想隐藏滚动条。 另外,我的第二个问题。我要这样做,以便当帖子超过当前宽度时,宽度将自动增加,并且内容不会开箱即用。 有人知道如何执行此操作吗? 帖子区域: 主网站容器: 问题答案: 将属性设置为,或者如果不继承该属性,则将其完全删除。

  • 我试图弄清楚如果不需要,如何隐藏。我的意思是,我正在建设一个网站,我有一个主要区域,其中的帖子将显示,我想隐藏滚动条,如果内容不超过当前的宽度。 还有,我的第二个问题。我想使它,所以当帖子超过当前的宽度,宽度将自动增加,内容不会走出盒子。 有人知道怎么做吗? 岗位区域: 主网站容器:

  • 我是jQuery的新手,我试图在不使用jQuery的切换函数的情况下创建一个show/hide切换按钮,但我不知道下面的代码有什么问题。 “隐藏”按钮可成功隐藏段落。隐藏部分起作用了。它添加了一个类“show”,删除了类“hide”,并更改了按钮的文本。我使用Dev工具来查看这个部分,这个部分正在工作,但是再次点击按钮就不工作了,即show部分。 null null

  • 我对Java很陌生,我正在努力学习。我写了少量的代码,但结果并不是我所期望的。看起来,无论我将体重设置为什么,它都不会显示“你的脂肪”上方的打印。我错过了什么? 我希望这段代码能够顺序检查每个else语句给出的int值,并打印出与int值相等的行。

  • 问题内容: 我想申请到它是否有元素。 到目前为止,我已经将样式应用于元素(如果存在)。但我想的,如果有,仅使用。 以下是 该代码 问题答案: CSS3不可能。有一个建议的CSS4选择器,可以做到这一点,它看起来像这样(选择元素): 作为替代方案,使用jQuery,您可以利用的单行代码是这样的: 然后,您可以继续在CSS中设置样式。

  • 我在JLabel中有一些长文本,例如“Lorem ipsum dolor sit amet, consecetur adipiscing elit, se do eiusmod temor interdidunt ut labore et dolore magna aliqua”。如果用户调整窗口大小并且没有太多空间,我想隐藏一些文本。我想得到这样的东西“Lorem ipsum dolor sit