我有一个Silverlight应用程序,我已经设置了我的列表框样式。这是ListBoxItem样式的一部分,它是应用程序范围的:
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ListBoxItemGrid" Storyboard.TargetProperty="Background" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource MouseOverColorBrush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
现在我有另一个列表框,当用户将鼠标悬停在ListBoxItem上时,我不想发生任何事情。我试过这个:
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver" />
</VisualStateGroup>
但这似乎不起作用。如何覆盖默认的应用程序范围样式?我不确定它是否相关,但应用程序范围的样式是样式,而我的'特殊'列表框有一个ListBoxItem的模板。
答案 0 :(得分:1)
找到它。我不得不给容器一个风格:
<ListBox Grid.Row="1"
ItemsSource="{Binding TheItems}"
ItemContainerStyle="{StaticResource TheLineStyle}"
ItemTemplate="{StaticResource TheItemTemplate}"></ListBox>
<Style TargetType="ListBoxItem" x:Key="TheLineStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid>
<ContentControl Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" />
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="MouseOver" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>