2014-01-15 79 views
1

我想在DataTrigger中將ProgressBar設置爲true時旋轉橢圓。但這不行。 我測試橢圓是工作OK與不透明度。但它不適用於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 = {RelativeSource self}」。它會拋出異常(無法在不可變對象實例上動畫'(0)。(1)')

在示例代碼中。我有三個橢圓。當我在模板中找到它時左邊的橢圓不起作用(我嘗試使它工作,但它不起作用)。中心橢圓與模板中的橢圓是相同的代碼。但是,當我直接在表單中找到它時,它可以正常工作。我用模板中的Opacity屬性測試橢圓。它工作正常。我不知道哪個是我的錯誤。

你能幫我一下嗎。

感謝您閱讀我的問題

回答

0

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

對不起WPF-it。我不清楚我的問題。我修改了上面的問題 – PhuVo