【发布时间】:2013-08-03 07:00:25
【问题描述】:
我想要一个在 DataTrigger 触发时闪烁/动画的按钮。我想为按钮的背景设置动画。下面是我的 xaml 代码。
<Window.Resources>
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.Notification}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Name="StartBlinking">
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="Orange" Duration="00:00:00.4" RepeatBehavior="Forever" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.Notification}" Value="False">
<DataTrigger.EnterActions>
<RemoveStoryboard BeginStoryboardName="StartBlinking"/>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<Grid>
<Button x:Name="Button" Content="Button" Width="25" Height="25" Margin="158,62,320,224" Click="Button_Click"></Button>
<Button Style="{StaticResource ButtonStyle}" Content="Button" Focusable="False" Height="75" HorizontalAlignment="Left" Margin="23,146,0,0" Name="btnImgBrush" VerticalAlignment="Top" Width="160"></Button>
</Grid>
</Grid>
这里是后端代码:
public Boolean Notification
{
get { return new_notification; }
set
{
new_notification = value;
RaisePropertyChanged("Notification");
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Notification)
{
Notification = false;
}
else
{
Notification = true;
}
}
但是,它没有用。任何想法为什么它不起作用?
非常感谢任何帮助,谢谢。
【问题讨论】:
-
您不能像这样为背景属性设置动画。.动画对象不能用于为属性“背景”设置动画,因为它的类型为“System.Windows.Media.Brush”不兼容。
-
您在哪里声明了您的通知属性..??在视图模型中或代码后面..??
-
是的,我已经在视图模型中声明了通知属性。还有其他方法可以根据 Notification 属性为按钮背景设置动画吗?
-
试试我的代码..我希望它对你有帮助..它工作正常:)
-
它对我不起作用。 :(
标签: wpf xaml button storyboard datatrigger