<Window x:Class="WpfApp3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp3"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="450">
<Window.Resources>
</Window.Resources>
<Grid>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center" >
<Grid>
<Ellipse Width="20"
Height="20"
IsHitTestVisible="False"
RenderTransformOrigin="0.5,0.5"
x:Name="ellipse" >
<Ellipse.RenderTransform>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</Ellipse.RenderTransform>
<Ellipse.Fill>
<RadialGradientBrush>
<GradientStop Color="#ffffff" Offset="0.4"/>
<GradientStop Color="Red" Offset="0.1"/>
</RadialGradientBrush>
</Ellipse.Fill>
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:MainWindow},Path=IsTwinkle}"
Value="true">
<DataTrigger.Setters>
<Setter Property="Visibility" Value="Visible" />
</DataTrigger.Setters>
<DataTrigger.EnterActions>
<BeginStoryboard Name="bb">
<Storyboard RepeatBehavior="Forever">
<DoubleAnimation BeginTime="0" Storyboard.TargetProperty="RenderTransform.ScaleX"
From="0"
To="10"
Duration="00:00:0.6" />
<DoubleAnimation BeginTime="0" Storyboard.TargetProperty="RenderTransform.ScaleY"
From="0"
To="10"
Duration="00:00:0.6" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:MainWindow},Path=IsTwinkle}"
Value="false">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="bb" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
<Border Width="10"
Height="10"
CornerRadius="5"
BorderThickness="0"
Background="Blue" />
</Grid>
<Grid Margin="50">
<Ellipse Width="20"
Height="20"
IsHitTestVisible="False"
RenderTransformOrigin="0.5,0.5"
x:Name="ellipse2" >
<Ellipse.RenderTransform>
<ScaleTransform ScaleX="1" ScaleY="1"/>
</Ellipse.RenderTransform>
<Ellipse.Fill>
<RadialGradientBrush>
<GradientStop Color="#ffffff" Offset="0.35"/>
<GradientStop Color="Red" Offset="0.8"/>
</RadialGradientBrush>
</Ellipse.Fill>
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:MainWindow},Path=IsTwinkle}"
Value="true">
<DataTrigger.Setters>
<Setter Property="Visibility" Value="Visible" />
</DataTrigger.Setters>
<DataTrigger.EnterActions>
<BeginStoryboard Name="bb">
<Storyboard RepeatBehavior="Forever">
<DoubleAnimation BeginTime="0" Storyboard.TargetProperty="RenderTransform.ScaleX"
From="0"
To="1"
Duration="00:00:0.6" />
<DoubleAnimation BeginTime="0" Storyboard.TargetProperty="RenderTransform.ScaleY"
From="0"
To="1"
Duration="00:00:0.6" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:MainWindow},Path=IsTwinkle}"
Value="false">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="bb" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
<Border Width="10"
Height="10"
CornerRadius="5"
BorderThickness="0"
Background="Blue" />
</Grid>
</StackPanel>
<StackPanel VerticalAlignment="Center">
<CheckBox IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=local:MainWindow},Path=IsTwinkle}"
Content="是否闪烁"/>
</StackPanel>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
/// <summary>
/// 是否闪烁
/// </summary>
public bool IsTwinkle
{
get { return (bool)GetValue(IsTwinkleProperty); }
set { SetValue(IsTwinkleProperty, value); }
}
public static readonly DependencyProperty IsTwinkleProperty =
DependencyProperty.Register("IsTwinkle", typeof(bool), typeof(MainWindow), new PropertyMetadata(false));
}