Storyboard.SetTargetProperty(Timeline, String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
設定目標專案的 Storyboard.TargetProperty XAML 附加屬性的值。
public:
static void SetTargetProperty(Timeline ^ element, Platform::String ^ path);
static void SetTargetProperty(Timeline const& element, winrt::hstring const& path);
public static void SetTargetProperty(Timeline element, string path);
function setTargetProperty(element, path)
Public Shared Sub SetTargetProperty (element As Timeline, path As String)
參數
- element
- Timeline
要為其設定值的目標專案。
- path
-
String
Platform::String
winrt::hstring
要設定之目標專案的 Storyboard.TargetProperty 值。 這會指定限定性路徑,以套用動畫的相依性屬性為目標。 請參閱<備註>。
備註
在程式碼中使用 SetTargetProperty,而不是以初始 XAML 定義中的動畫為目標是罕見的。 在動畫中取得所有目標與時間正確是很棘手的,特別是當您嘗試納入只在執行時間可用的值時。 建議您在 XAML 中建立動畫,這表示您將使用 Storyboard.TargetProperty 附加屬性,而不是 SetTargetProperty 執行時間方法, (在幕後支援 XAML) 。 在程式碼中建置動畫是進階案例。 以下是牽涉到的非常基本程式碼範例:
Rectangle rect = new Rectangle();
rect.RenderTransform = new ScaleTransform();
//TODO - connect this Rectangle to the visual tree
Storyboard storyboard = new Storyboard();
DoubleAnimation scalex = new DoubleAnimation()
{
From = 0,
To = 8,
AutoReverse = true,
Duration = TimeSpan.FromSeconds(2)
};
Storyboard.SetTargetProperty(scalex, "(Rectangle.RenderTransform).(ScaleTransform.ScaleX)");
Storyboard.SetTarget(scalex, rect);
//TODO - Begin the animation
動畫屬性目標的屬性路徑
Storyboard.TargetProperty附加屬性通常會在組成 XAML 中動畫定義的Storyboard.Children集合的個別時間軸衍生動畫上設定。
Storyboard.TargetName屬性可以處理字串語法,以設定屬性值的子屬性為目標。 語法會使用「點向下」的隱喻,以物件屬性關聯性鏈結為目標,直到識別出特定子屬性為止。 這可讓動畫套用至支援動畫結構 (Double、 Color、 Point和 Object for DiscreteObjectKeyFrameAnimation) 的數值型別。 例如,您可能想要以動畫顯示Control的背景值,其採用Brush的物件類型。 沒有 「BrushAnimation」 動畫類型,因此您無法直接以 Background 的動畫為目標。 但您可以改為參考名為Color的SolidColorBrush子屬性,其採用Color類型,因此可由ColorAnimation鎖定。 此的字串語法如下:
(Control.Background).(SolidColorBrush.Color)
「 (Control.Background) 」 周圍的括弧會通知處理中繼 「dot」 不應該「點向下」,而是尋找目標擁有者類型限定 Background 屬性的一部分。 下列 「dot」 會被視為「點向下」指令,它會要求 Brush 類型的子屬性。 最後的 「 (SolidColorBrush.Color) 」 片段會再次包含括弧,讓內部 「dot」 再次用來作為 ownertype.member 資格,而不是 「dot-down」。
請注意,對於子屬性值,可能會有一些值推斷。 例如,即使 「Color」 實際上是特定 Brush 子類別 SolidColorBrush的值,下列字串仍可藉由推斷運作:
(Control.Background).Color
屬性路徑規格比這個還要多。 此備註只是為了讓您開始使用基本目標案例。 如需詳細資訊,請參閱 屬性路徑語法 和 分鏡腳本動畫。
移轉注意事項
當您指定 path 參數的路徑值時,您會指定字串,而且如果您使用 GetTargetProperty再次擷取值,您也會取得值做為字串。 這與一些以 Microsoft Silverlight 和 WPF Windows Presentation Foundation () 等概念為目標之動畫屬性的其他實作相反。 這些 XAML 技術會使用具代表性的物件類型 (離散 PropertyPath 物件) 來儲存動畫目標的屬性路徑資訊,而 SetTargetProperty 方法的語法會使用 PropertyPath 類型。 Windows 執行階段也有PropertyPath類別;不過該類別僅用於資料系結,這是屬性路徑定義的另一個案例。 Windows 執行階段不支援在使用字串定義Storyboard 之後修改 Storyboard中的屬性路徑,因此其Storyboard.TargetProperty的實作會採用字串。 此區別甚至對 XAML 語法和附加屬性支援並不重要。 只有在程式碼中建立動態分鏡腳本,或在 XAML 中一開始定義腳本值之後,以程式設計方式修改分鏡腳本值。 如果您需要在執行時間將動畫重定為不同的屬性,請使用新的屬性路徑字串建立全新的 Storyboard 、使用新的 分鏡腳本執行動畫,以及停止使用前一個腳本。