我的问题似乎也是其他人的问题,因为我发现了一些类似的其他问题(例如WPF - hiding listbox items)。在那个特定的问题/答案中,我发现了比我发现的任何其他东西更多的东西。我面临的问题是,当我实现DataTrigger
时,答案就在那里(对于ListView
略有修改而不是ListBox
),我得到了正确的折叠该项目,但对于某些事情,我的主题似乎恢复为默认值而不是使用我的ModernUI样式。
以下是我添加到ListView
的内容,以便将折叠的项目真正折叠:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility}" Value="Collapsed">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
(注意那个不应该在那里的物品的橙色悬停)
(注意悬停/选择指示器现在显示为蓝色,我的文本字段不再适当调整大小)
任何人都可以提供的任何帮助都将非常感谢,并且感谢您花时间阅读本文。
旁注:请不要告诉我使用CollectionView
进行过滤。昨天我花了大部分时间与之抗争,并且由于使用了BindingList<>
而不是ObservableCollection<>
,它根本无法适应我的情况。
答案 0 :(得分:2)
这里的问题是ModernUI
框架会覆盖ListViewItem
的默认样式,但是你要覆盖它:
<Style TargetType="{x:Type ListViewItem}">
现在,您的样式成为ListViewItem
的新默认样式。要解决此问题,请使用BasedOn
属性继承 ModernUI
样式。
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">
上面的代码只是继承了默认的ListViewItem
样式(已被ModernUI
覆盖)。