我有一个列表框,其中包含一些带有模板的项目。这些项目是在运行时创建的。当鼠标悬停在ListBoxItem上时,模板会触发缩放动画。我想在用户点击项目时更改项目的背景。下面的代码不起作用,因为我相信IsMouseCaptured(click)由列表框选择器处理。我有什么想法可以在XAML代码中完成这一切吗?
<ControlTemplate.Triggers>
<Trigger Property="IsMouseCaptured" Value="True">
<Setter TargetName="rec" Property="Fill" Value="Black" />
</Trigger>
</ControlTemplate.Triggers>
答案 0 :(得分:1)
当用户点击列表框中的某个项目时,会选择该项目,因此您的触发器需要对IsSelected-Property进行操作。
为ListBoxItem创建一个样式,将Trigger放在IsSelected-Property上,并将该样式设置为ItemContainerStyle。
答案 1 :(得分:0)
正如Falcon所说,你可以将事件用于你的任务。这甚至可以完全在XAML中完成,如下所示:
<EventTrigger RoutedEvent="MouseDown" >
<EventTrigger.Actions>
<BeginStoryboard x:Name="ClickBackground">
<Storyboard>
<ObjectAnimationUsingKeyFrames
Duration="0" FillBehavior="HoldEnd"
Storyboard.TargetName="rec"
Storyboard.TargetProperty="Fill">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<SolidColorBrush Color="Black" />
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="MouseUp" >
<EventTrigger.Actions>
<StopStoryboard BeginStoryboardName="ClickBackground" />
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave" >
<EventTrigger.Actions>
<StopStoryboard BeginStoryboardName="ClickBackground" />
</EventTrigger.Actions>
</EventTrigger>