咦?Storyboard在WPF變換中怎么不能用了?


    這幾天寫代碼的時候一直被一個奇怪的現象困擾:明明是看起來沒有任何問題的C#代碼,目的是實現在程序中水平移動一個按鈕。代碼是如此寫的:

            Storyboard s = new Storyboard();
            DoubleAnimation da = new DoubleAnimation();
            da.To = 100;
            da.Duration = TimeSpan.FromSeconds(0.1);
            Storyboard.SetTarget(da, t);  //此處t為TranslateTransform對象
            Storyboard.SetTargetProperty(da,new PropertyPath(TranslateTransform.XProperty));
            s.Children.Add(da);
            s.Begin();


想破腦袋也沒發現那里不對.於是我將這段代碼轉換成xaml:

        <Storyboard x:Key="storyboard">
            <DoubleAnimation Storyboard.TargetName="t" Storyboard.TargetProperty="X"
                             Duration="00:00:0.1"  To="100" />
        </Storyboard>
 


這樣便運行起來了,但使用xaml並不能夠達到目的.后來,經過漫長尋找答案的過程,終於得出了結果,代碼應當是這么寫:

            Storyboard s = new Storyboard();
            DoubleAnimation da = new DoubleAnimation();
            da.To = 100;
            da.Duration = TimeSpan.FromSeconds(0.1);
            Storyboard.SetTarget(da, b);//此處b為Button對象
            Storyboard.SetTargetProperty(da, new PropertyPath("RenderTransform.X"));
            s.Children.Add(da);
            s.Begin();

 


至於原因,msdn Library上已經闡述的很清楚了:

http://msdn.microsoft.com/zh-cn/library/ms742868.aspx

可以使用 Storyboard 對可動畫處理的類的依賴項屬性進行動畫處理(有關如何使類成為可動畫處理的類的更多信息,請參見動畫概述)。 不過,由於圖板演示是框架級別的功能,該對象必須屬於 FrameworkElementFrameworkContentElementNameScope

 

誰讓咱沒好好看msdn呢?

 

就說到這兒了,高手請保持淡定,本人表示感謝.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM