椭圆不能在datatrigger中旋转

时间:2014-01-15 13:53:10

标签: wpf

我希望在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属性测试椭圆。它工作正常。我不知道哪个是我的错误。

你能帮我一把。

感谢您阅读我的问题

1 个答案:

答案 0 :(得分:0)

WPF中不存在

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}}