我在 ListViewItem 上有一个设置 Theme 属性的 Style
<Style x:Key="{x:Type ListViewItem}" TargetType="{x:Type ListViewItem}">
<Setter Property="Template" Value="{StaticResource ListViewItemTemplate}"/>
</Style>
但是,在我使用 ListView 的一种情况下,我想使用 DataTemplateSelector 来确定要使用的模板
<Style x:Key="MyListStyle" TargetType="{x:Type ListView}" BasedOn="{StaticResource {x:Type ListView}}">
<Setter Property="ItemTemplateSelector" Value="{StaticResource MyItemTemplateSelector}"/>
</Style>
它是这样应用的
<ListView Style="{StaticResource MyListStyle}/>
但是,似乎项目上的样式会接管,并且该样式将应用于 ListView 中的所有项目。我发现这个问题有一个类似的问题,但是,该解决方案根本不使用 Item 样式上的模板。我需要保持这一点。
我通过在 ListView 中重新设置 ListViewItems 的样式来使用 ContentTemplateSelector
<Style x:Key="MyItemStyle" BasedOn="{StaticResource {x:Type ListViewItem}}" TargetType="{x:Type ListViewItem}">
<Setter Property="ContentTemplateSelector" Value="{StaticResource MyItemTemplateSelector}"/>
</Style>
但是,将使用其他样式的模板。如果我尝试使模板无效,那么什么都不会出现!
<Setter Property="Template" Value="{x:Null}"/
有没有办法可以替换给定 ListView 的 ListViewItems 上的模板,同时保留我的其余样式?