虽然有例外,但不建议在代码后面操作 Views 对象。这应该在xaml
文件中完成。
此示例在使用 WPF 时是不好的编码习惯。
之间切换Styles
是最好用的StyleSelectors
。在您的情况下,设置 ListView 的 ItemContainerStyleSelector 属性。
<Style x:Key="ItemStyle" TargetType="ListViewItem">
<!-- Setters and Triggers -->
</Style>
<Style x:Key="TrackSelectedStyle" TargetType="ListViewItem">
<!-- Setters and Triggers -->
</Style>
<example:TrackSelectionStyleSelectorx:Key="myContainerStyleSelector"
ItemsStyle ="{StaticResource ItemStyle}"
TrackSelectedStyle ="{StaticResource TrackSelectedStyle}"/>
<ListView ... ItemContainerStyleSelector="{StaticResource myContainerStyleSelector}"/>
和StyleSelector
类(把它放在单独的 .cs 文件中):
public class TrackSelectionStyleSelector: StyleSelector
{
public Style ItemsStyle {get; set;}
public Style TrackSelectedStyle {get; set;}
public override Style SelectStyle( object item, DependencyObject container )
{
if ( /* isTrackSelected logic */ )
return TrackSelectedStyle;
return ItemsStyle;
}
}
不要忘记将 item 参数转换为 ListViewItems 内容类型的类型。