【发布时间】:2012-02-08 06:38:22
【问题描述】:
我有一个数据绑定项目的列表。
我有一个文本框,通过将它们的可见性绑定到描述是否包含键入的文本来动态过滤它们。这也绑定到 'focusable' 属性以删除由于过滤器而不可见的选定项目。
ListBoxItems 的 DataTrigger:
<DataTrigger Value="False">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource filterToBoolean}">
<Binding Path="Description" />
<Binding ElementName="txtFilter" Path="Text" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Visibility" Value="Collapsed" />
<Setter Property="Focusable" Value="False" />
</DataTrigger>
我的问题出现在以下场景中。假设我们有三个项目(Joe、Bob、Jacob)。
如果我们在过滤器中输入“J”,然后选择“Joe”并按住 Shift 并单击“Jacob”,即使“Bob”不可见,也会选择三个项目(全部)。如果在应用过滤器之前选择了所有三个,则同样适用。
我在这里找到了一个尝试解决此问题的示例,但是它并不完全有效。如果在应用过滤器之前选择了项目,它将适用,但是,如果在之后选择,则会出现同样的问题。
在此先感谢您的帮助。
【问题讨论】:
-
你应该使用ICollectionView(见备注)。同样,谷歌“WPF ListView 过滤器”
标签: c# wpf data-binding