2014-01-15 3 views
1

DataTrigger에서 ProgressBar가 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 - 그것 죄송합니다. 나는 나의 질문을 분명하게하지 않는다. Ellipse는 폼에 직접있을 때 작동합니다. 하지만 템플릿에있을 때는 작동하지 않습니다.

다음은 제 코드입니다. https://www.mediafire.com/?7rb8gvthx94rfiy

트리거에서 "RelativeSource = {RelativeSource self}"를 생략하면 다음과 같습니다. 그것은 예외를 던질 것입니다 (불변의 객체 인스턴스에 '(0). (1)'을 움직일 수 없습니다)

샘플 코드에서. 나는 타원 3 개가있다. 왼쪽 타원은 템플릿에서 찾을 때 작동하지 않습니다 (작동 시키려고 시도하지만 작동하지 않습니다). 중심 타원은 템플릿의 타원과 동일한 코드입니다. 하지만 양식에서 직접 찾을 때 제대로 작동합니다. 그리고 템플릿의 불투명도 속성으로 타원을 테스트합니다. 그리고 그것은 정상적으로 작동합니다. 나는 내 실수인지 모른다.

나를 도와 줄 수 있습니까? WPF에 존재하지 않는 내 질문에

답변

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> 
+0

죄송합니다. 나는 나의 질문을 분명하게하지 않는다. 위에 질문을 수정했다. – PhuVo

관련 문제