我希望在DataTrigger中将ProgressBar设置为true时旋转椭圆。但这不行。 我用Opacity测试椭圆是否正常工作。但它不适用于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-它。我的问题不明确。 当Ellipse直接定位时,它可以正常工作。但是当它位于模板中时它不起作用。
关注是我的代码。 https://www.mediafire.com/?7rb8gvthx94rfiy
如果我在触发器中省略“RelativeSource = {RelativeSource self}”。它将抛出异常(无法在不可变对象实例上设置'(0)。(1)'动画)
在示例代码中。我有三个椭圆。当我在模板中找到它时,左椭圆不起作用(我尝试使其工作,但它不起作用)。中心椭圆与模板中的椭圆相同。但是当我直接在表单中找到它时,它工作正常。我在模板中使用Opacity属性测试椭圆。它工作正常。我不知道哪个是我的错误。
你能帮我一把。感谢您阅读我的问题
答案 0 :(得分:0)
Ellipse.ProgressBar
属性。您可能会引用DataContext
Ellipse
的基础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>
。
{{1}}