当ProgressBar在DataTrigger中设置为true时,我想旋转椭圆。但这不起作用。我测试椭圆是否可以使用不透明度。但它不适用于RotateTransform。椭圆也可以使用EventTrigger。
这是我的错误以及我如何修复它。
感谢您阅读我的文章。
<Ellipse Name="ProgressEllipse" Width="40" Height="40" StrokeThickness="7" Stroke="{StaticResource ProcessEllipseGradient}" Margin="5,0,0,0">
<Ellipse.RenderTransform>
<RotateTransform CenterX="20" CenterY="20" Angle="0"/>
</Ellipse.RenderTransform>
<!--<Ellipse.Triggers>
<EventTrigger RoutedEvent="Ellipse.Loaded" SourceName="ProgressEllipse">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="ProgressEllipse"
Storyboard.TargetProperty="(Ellipse.RenderTransform).(RotateTransform.Angle)"
From="0"
To="360"
Duration="0:0:1"
RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Ellipse.Triggers>-->
<Ellipse.Style>
<Style TargetType="{x:Type Ellipse}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=ProgressBar}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="(Ellipse.RenderTransform).(RotateTransform.Angle)"
From="0"
To="1"
Duration="0:0:5"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
附加信息
对不起WPF。我的问题不清楚。当椭圆直接位于表单中时,它可以正常工作。但当位于模板中时,它不起作用。
跟随是我的密码。https://www.mediafire.com/?7rb8gvthx94rfiy
如果我省略";RelativeSource={RelativeSsource self}";在触发器中。它将引发异常(无法设置"(0)"的动画。(1) '在不可变对象实例上)
在示例代码中。我有三个椭圆。当我在模板中定位左椭圆时,它不起作用(我试图让它起作用,但它不起)。中心椭圆与模板中的椭圆代码相同。但当我直接在表单中定位它时,它可以正常工作。我在模板中测试椭圆的Opacity属性。而且还可以。我不知道哪一个是我的错。
你能帮我一把吗。
感谢阅读我的问题
Ellipse.ProgressBar
属性在WPF中不存在。您可能引用了Ellipse
的基础DataContext
中的某些属性。
因此,将Binding="{Binding RelativeSource={RelativeSource Self}, Path=ProgressBar}"
更改为简单的Binding="{Binding Path=ProgressBar}"
还要确保此ProgressBar
属性生成属性更改通知,以便触发器执行操作。。。
另外,你还应该有一个EndStoryBoard
。
<Ellipse.Style>
<Style TargetType="{x:Type Ellipse}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ProgressBar}"
Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Name="MyStoryboard">
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="(Ellipse.RenderTransform).(RotateTransform.Angle)"
From="0"
To="1"
Duration="0:0:5"
RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="MyStoryboard"/>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>