所以我刚刚创建了一个带有情节提要动画的自定义控件。
启动动画的事件触发看起来像这样
<EventTrigger RoutedEvent="MouseDown">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="SelectedBorder"
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
To="#00C8FC" Duration="0:0:0.25">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
如您所见,在MouseDown
事件中,我正在更改边框的颜色,就是这样。
单击它后它会改变颜色,例如,我单击了另一个控件。 在这种情况下,我想将最新边框的背景设置为白色。 目前,它正在更改我在表单上具有的每个控件实例的边框颜色。
我需要能够以某种方式每次单击XAML来重置颜色。 想象一下.. 我单击一个按钮,边框变为蓝色。 我单击另一个按钮(相同类型),该按钮变为蓝色,并且按钮一个重置为白色。
此刻,就像 我单击一个按钮,它变成蓝色。 我单击另一个,它也会变成蓝色,但是旧的保持蓝色。
答案 0 :(得分:1)
nifi.properties
来指示选择MouseDown
。更为可靠的方法是在ListViewItem
中使用属性触发器。
查看下面的代码,您会发现我在Style
中使用Trigger
处理Style
的选择状态。如果您使用ListViewItem
或MouseDown
事件,您会注意到您无法枚举影响选择的所有事件。
MouseUp
当您要保持动画播放时,只需将设置器替换为动作即可:
<ListView>
<ListViewItem>Coll Programmer1</ListViewItem>
<ListViewItem>MinecraftGeek1</ListViewItem>
<ListViewItem>Steve</ListViewItem>
<ListViewItem>John</ListViewItem>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Grid Name="RootPanel" Background="Transparent" Height="48">
<Rectangle Name="SelectedBorder" Width="8" Fill="#00c9fe"
HorizontalAlignment="Left" Visibility="Collapsed" />
<ContentPresenter Margin="12 0 0 0" />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="SelectedBorder" Property="Visibility" Value="Visible" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="RootPanel" Property="Background" Value="#00c9fe" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>