如何在不破坏主题的情况下真正隐藏 ListViewItem?
How do I truly hide a ListViewItem without destroying my theme?
我的问题似乎和其他人一样,因为我发现了其他一些类似的问题(例如 WPF - hiding listbox items). In that particular question/answer, I've gotten further than anything else I've found combined. The problem I'm facing is that when I implement the DataTrigger
as it is in the answer there (slightly modified for ListView
as opposed to ListBox
), I get the proper collapsing of the item, but for certain things, my theme appears to be reverted to the defaults instead of using my 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>
这是在 添加上述内容之前 过滤项目的示例:
(注意不应该出现的项目的橙色悬停)
下面是 添加上述内容后 筛选的项目示例:
(请注意 hover/selection 指示器现在不知何故是蓝色的,我的文本字段大小不再合适)
非常感谢任何人提供的帮助,也非常感谢您花时间阅读本文。
Side-note:请不要只告诉我使用CollectionView
来过滤。我昨天大部分时间都在与它作斗争,并且由于使用 BindingList<>
而不是 ObservableCollection<>
,它根本不适合我的情况。
这里的问题是 ModernUI
框架覆盖了 ListViewItem
的默认样式,但是您正在覆盖这个:
<Style TargetType="{x:Type ListViewItem}">
现在您的样式成为 ListViewItem
的新 默认 样式。要解决此问题,请使用 BasedOn
属性来 继承 ModernUI
样式。
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">
上面的代码简单地继承了默认的 ListViewItem
样式(已被 ModernUI
覆盖)。
我的问题似乎和其他人一样,因为我发现了其他一些类似的问题(例如 WPF - hiding listbox items). In that particular question/answer, I've gotten further than anything else I've found combined. The problem I'm facing is that when I implement the DataTrigger
as it is in the answer there (slightly modified for ListView
as opposed to ListBox
), I get the proper collapsing of the item, but for certain things, my theme appears to be reverted to the defaults instead of using my 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>
这是在 添加上述内容之前 过滤项目的示例:
(注意不应该出现的项目的橙色悬停)
下面是 添加上述内容后 筛选的项目示例:
(请注意 hover/selection 指示器现在不知何故是蓝色的,我的文本字段大小不再合适)
非常感谢任何人提供的帮助,也非常感谢您花时间阅读本文。
Side-note:请不要只告诉我使用CollectionView
来过滤。我昨天大部分时间都在与它作斗争,并且由于使用 BindingList<>
而不是 ObservableCollection<>
,它根本不适合我的情况。
这里的问题是 ModernUI
框架覆盖了 ListViewItem
的默认样式,但是您正在覆盖这个:
<Style TargetType="{x:Type ListViewItem}">
现在您的样式成为 ListViewItem
的新 默认 样式。要解决此问题,请使用 BasedOn
属性来 继承 ModernUI
样式。
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">
上面的代码简单地继承了默认的 ListViewItem
样式(已被 ModernUI
覆盖)。