在我的listView上应用自定义ItemContainerStyle
后,突出显示,listView的项目将无法正常工作,只有在鼠标位于{{1}之上时才有效您可以在屏幕截图中看到该项目:
原创精彩集锦(未应用任何款式):
自定义ItemContainerStyle应用时突出显示
在应用自定义ItemContainerStyle时突出显示(鼠标悬停在ContentPresenter
上)
ListView样式:
ContentPresenter
ItemContainerStyle:
<Style x:Key="DetailStyle" TargetType="{x:Type ListView}">
<Setter Property="l:ListBoxSelector.Enabled" Value="True"/>
<Setter Property="ItemContainerStyle" Value="{StaticResource DetailViewStyle}"/>
<Setter Property="View">
<Setter.Value>
<GridView AllowsColumnReorder="True">
<GridViewColumn Width="30" CellTemplate="{StaticResource columnIconDT}"/>
<GridViewColumn Header="Name" Width="100" CellTemplate="{StaticResource columnNameDT}"/>
<GridViewColumn Header="Size" Width="100" CellTemplate="{StaticResource columnSizeDT}"/>
</GridView>
</Setter.Value>
</Setter>
</Style>
我该如何解决?
答案 0 :(得分:0)
您的问题是您已使用自己的定义替换ControlTemplate
的默认ListViewItem
,并且该定义不包含在鼠标悬停时突出显示该项目的元素。
解决方案很简单...找到默认的ControlTemplate
并使用缺少的元素更新您的ControlTemplate
...我猜,您至少需要VisualStateManager.VisualStateGroups
元素来自原始ControlTemplate
。
您可以在MSDN上的ListView Styles and Templates页面找到ControlTemplate
的默认ListViewItem
的完整详情。
更新&gt;&gt;&gt;
老兄,如果要覆盖任何控件ControlTemplate
的一部分,你可以这样做:
首先,将整个默认ControlTemplate
复制到您的新ControlTemplate
中,并确保其正常运行。然后,只有 然后,您是否可以开始调整内容,每次添加或删除一些内容时检查它是否仍按预期工作。
这是一种自动防故障方法,只有你身边的草率工作才能阻止它工作......放手一搏。