Wpf 如何在不破坏主题的情况下真正隐藏ListViewItem?

Wpf 如何在不破坏主题的情况下真正隐藏ListViewItem?,wpf,xaml,listviewitem,Wpf,Xaml,Listviewitem,我的问题似乎也是其他人的问题,因为我发现了一些其他类似的问题(例如)。在这个特定的问题/答案中,我比我发现的任何其他问题/答案加起来都要深入。我面临的问题是,当我实现答案中的DataTrigger时(与ListBox相比,ListView稍微修改),我得到了项目的正确折叠,但对于某些事情,我的主题似乎恢复为默认值,而不是使用我的样式 以下是我添加到我的列表视图中的内容,以便真正折叠折叠折叠的项目: <ListView.ItemContainerStyle> <Style

我的问题似乎也是其他人的问题,因为我发现了一些其他类似的问题(例如)。在这个特定的问题/答案中,我比我发现的任何其他问题/答案加起来都要深入。我面临的问题是,当我实现答案中的
DataTrigger
时(与
ListBox
相比,
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
而不是
observeCollection
,它根本不适合我的情况。

这里的问题是
ModernUI
框架覆盖了
ListViewItem
的默认样式,但是,您要覆盖以下内容:

<Style TargetType="{x:Type ListViewItem}">

上面的代码只是继承了默认的
ListViewItem
样式(已被
ModernUI
覆盖)。

旁注:为什么要在WPF中使用BindingList?在这个样式上添加
BasedOn
属性,这样它就继承了主题的样式。嗯,
BasedOn=“{StaticResource{x:Type ListViewItem}”怎么样
。这应该基于
ListViewItem
的默认样式。我没有用你的例子尝试过,但值得一试。你可以用@MikeEason,你是我的英雄!请把这个评论作为一个答案,这样我就可以给你一些当之无愧的答案,你这个美丽的男人。
<Style TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource {x:Type ListViewItem}}">