Storyboard.SetTargetProperty(Timeline, String) 方法

定义

设置目标元素的 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 属性可以处理一个字符串语法,该语法允许以属性值的子属性为目标。 语法使用“点下”隐喻来定位对象属性关系链,直到标识特定的子属性。 这使动画可以应用于支持动画结构的值类型, (DiscreteObjectKeyFrameAnimation) 的 DoubleColorPointObject。 例如,你可能想要对 Control的背景值进行动画处理,该控件采用对象类型 Brush。 没有“BrushAnimation”动画类型,因此不能直接将 背景 动画作为目标。 但是,可以改为引用名为 ColorSolidColorBrush 子属性,该属性采用 Color 类型,因此可以成为 ColorAnimation 的目标。 此字符串的语法为:

(Control.Background).(SolidColorBrush.Color)

“ (Control.Background) ”的括号告知处理,中间的“点”不应“向下点”,而是限定名称的一部分,用于查找用于定位的所有者类型限定 的 Background 属性。 以下“dot”被视为“点向下”指令,该指令请求 Brush 类型的子属性。 最后的“ (SolidColorBrush.Color) ”片段再次包含括号,以便内部“dot”再次用作 ownertype.member 限定,而不是“点向下”。

请注意,对于子属性值,可能会有一些值推理。 例如,以下字符串通过推理工作,即使“Color”实际上是特定 Brush 子类 SolidColorBrush 的值:

(Control.Background).Color

属性路径规范比这要多得多。 此备注旨在帮助你开始使用基本目标方案。 有关详细信息,请参阅 属性路径语法情节提要动画

迁移说明

为路径参数指定 路径 值时,指定字符串;如果使用 GetTargetProperty 再次检索该值,则还会以字符串的形式获取该值。 这与面向 Microsoft Silverlight 和 Windows Presentation Foundation (WPF) 等动画属性的其他实现形成鲜明对比。 这些 XAML 技术使用代表性对象类型 (离散 的 PropertyPath 对象) 来存储动画目标的属性路径信息, SetTargetProperty 方法的语法使用 PropertyPath 类型。 Windows 运行时也有 PropertyPath 类;但该类仅用于数据绑定,这是属性路径定义的另一种方案。 Windows 运行时不支持在使用字符串定义 Storyboard 后修改 Storyboard 中的属性路径,因此其 Storyboard.TargetProperty 的实现采用字符串。 这种区别甚至对 XAML 语法和附加属性支持都无关紧要。 它只涉及在代码中创建动态情节提要,或者在最初在 XAML 中定义情节提要值后以编程方式修改情节提要值。 如果需要在运行时将动画重定向到其他属性,请使用新的属性路径字符串创建一个全新的 Storyboard ,使用新的 Storyboard 运行动画,然后停止使用上一个情节 提要

适用于

另请参阅