2013-09-24 54 views
1

我正在Windows 8.1 RTM上開發。我有一個類型爲double的自定義依賴屬性的自定義控件。該控件已放置在用戶控件中。我在用戶控件上調用VisualStateManager.GoToState(control,true)。動畫應該轉換2秒。但是,它只是從0到1和從1到0捕獲。回調函數只能用0或1調用。如果直接將依賴項屬性設置爲介於0和1之間的任何值,則它將按預期工作。動畫在視覺狀態下不動畫(WinRT)

我有以下XAML:

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:controls="using:MyControls" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<Grid> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup x:Name="TestStates"> 
      <VisualStateGroup.Transitions> 
       <VisualTransition GeneratedDuration="0:0:2"/> 
      </VisualStateGroup.Transitions> 
      <VisualState x:Name="A"> 
       <Storyboard> 
        <DoubleAnimation 
         EnableDependentAnimation="True" 
         Duration="0" 
         Storyboard.TargetName="MyControl1" 
         Storyboard.TargetProperty="MyDependencyProperty" 
         To="0"/> 
       </Storyboard> 
      </VisualState> 
      <VisualState x:Name="B"> 
       <Storyboard> 
        <DoubleAnimation 
         EnableDependentAnimation="True" 
         Duration="0" 
         Storyboard.TargetName="MyControl1" 
         Storyboard.TargetProperty="MyDependencyProperty" 
         To="1"/> 
       </Storyboard> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
    <controls:MyControl x:Name="MyControl1" MyDependencyProperty="0"> 
</Grid> 
</UserControl> 

如果我設定的目標屬性不透明度,它的工作原理。

回顧前面的問題,EnableDependentAnimation似乎是這種行爲的常見罪魁禍首,但我已經將它設置爲true。

Timeline.AllowDependentAnimations爲true。

我已經剝奪了控制權,只有一個依賴項屬性沒有在回調邏輯。同樣的問題。

回答

1

看,我正在經歷的依賴屬性在動畫,發現了一個intereting點,我想我應該分享

是動畫,動畫的目標屬性必須是依賴屬性。此外,要動畫,目標屬性的值類型必須由現有的Timeline衍生的動畫類型之一支持。當應用動畫並運行時,動畫值的運行優先級高於該屬性所具有的任何值(例如本地值)。動畫還具有可選的HoldEnd行爲,即使動畫在視覺上似乎停止,也會導致動畫應用於屬性值。

我不知道可能是這將幫助這裏的鏈接到文件

animation

+0

感謝您的信息,但它沒有一個是有關我的問題。 – Brendon

+0

我知道這是反應舊但是,提供了有用的信息。謝謝。值得注意的是,WinRT自定義依賴項屬性應該使用DiscreteObjectKeyFrame進行動畫處理。謝謝 :) –