Partager via


Storyboard.SetTargetProperty(Timeline, String) Méthode

Définition

Définit la valeur de la propriété jointe XAML Storyboard.TargetProperty pour un élément cible.

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)

Paramètres

element
Timeline

Élément cible pour lequel définir la valeur.

path
String

Platform::String

winrt::hstring

Valeur Storyboard.TargetProperty de l’élément cible à définir. Cela spécifie un chemin de qualification qui cible la propriété de dépendance à laquelle l’animation s’applique. Consultez la section Notes.

Remarques

L’utilisation de SetTargetProperty dans le code plutôt que le ciblage d’une animation dans les définitions XAML initiales est rare. Il est difficile d’obtenir le ciblage et le minutage corrects dans une animation, en particulier si vous essayez d’incorporer des valeurs qui ne sont disponibles qu’au moment de l’exécution. Nous vous recommandons de créer vos animations en XAML, ce qui signifie que vous utiliserez la propriété jointe Storyboard.TargetProperty , et non la méthode d’exécution SetTargetProperty (qui prend en charge le CODE XAML en arrière-plan). La création d’animations dans le code est un scénario avancé. Voici un exemple de code très simple de ce qui est impliqué :

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

Chemins de propriété pour le ciblage de propriétés d’animation

La propriété jointe Storyboard.TargetProperty est généralement définie sur les animations dérivées de chronologie individuelles qui composent la collection Storyboard.Children d’une définition d’animation en XAML.

La propriété Storyboard.TargetName peut traiter une syntaxe de chaîne qui permet de cibler une sous-propriété d’une valeur de propriété. La syntaxe utilise une métaphore « point vers le bas » pour cibler une chaîne de relations objet-propriété jusqu’à ce qu’une sous-propriété particulière soit identifiée. Cela permet aux animations de s’appliquer aux types valeur où il existe une structure d’animation de prise en charge (Double, Color, Point et Object pour DiscreteObjectKeyFrameAnimation). Par exemple, vous pouvez animer la valeur d’arrière-plan d’un contrôle, qui prend un type d’objet Brush. Il n’existe pas de type d’animation « BrushAnimation », vous ne pouvez donc pas cibler directement une animation pour l’arrière-plan . Mais ce que vous pouvez faire à la place, c’est référencer une sous-propriété SolidColorBrush nommée Color, qui prend le type Color et peut donc être ciblée par une ColorAnimation. La syntaxe de chaîne est la suivante :

(Control.Background).(SolidColorBrush.Color)

Les parenthèses autour de « (Control.Background) » indiquent au traitement que le « point » intermédiaire ne doit pas « point vers le bas » et qu’il fait plutôt partie du nom de qualification qui trouve la propriété Background qualifiée par le type de propriétaire pour le ciblage. Le « point » suivant est traité comme une instruction « point vers le bas », qui demande une sous-propriété du type Brush . Le fragment final « (SolidColorBrush.Color) » inclut à nouveau les parenthèses afin que le « point » intérieur soit à nouveau utilisé comme qualification ownertype.member , et non comme « dot-down ».

Notez que pour les valeurs de sous-propriété, il peut y avoir une inférence de valeur. Par exemple, la chaîne suivante fonctionne par inférence même si « Color » est en fait une valeur de la sous-classe Brush particulière SolidColorBrush :

(Control.Background).Color

La spécification du chemin de propriété est bien plus importante que celle-ci. Cette remarque est simplement destinée à vous aider à démarrer avec les scénarios de ciblage de base. Pour plus d’informations, consultez Syntaxe du chemin d’accès aux propriétés et Animations storyboard.

Notes de migration

Lorsque vous spécifiez une valeur de chemin d’accès pour le paramètre path , vous spécifiez la chaîne et, si vous récupérez à nouveau la valeur à l’aide de GetTargetProperty, vous obtenez également la valeur sous forme de chaîne. Cela contraste avec d’autres implémentations de concepts de ciblage de propriété d’animation tels que Microsoft Silverlight et Windows Presentation Foundation (WPF). Ces technologies XAML utilisent un type d’objet représentatif (un objet PropertyPath discret) pour stocker les informations de chemin de propriété pour le ciblage d’animation, et la syntaxe des méthodes SetTargetProperty utilise le type PropertyPath . Le Windows Runtime a également une classe PropertyPath. Toutefois, cette classe est utilisée uniquement pour la liaison de données, ce qui est un autre scénario pour les définitions de chemin de propriété. Le Windows Runtime ne prend pas en charge la modification d’un chemin d’accès de propriété dans un storyboard après qu’il a été défini à l’aide de la chaîne , de sorte que son implémentation de Storyboard.TargetProperty prend une chaîne. Cette distinction n’a même pas d’importance pour la syntaxe XAML et la prise en charge des propriétés jointes. Il importe uniquement de créer des storyboards dynamiques dans du code ou de modifier par programmation les valeurs de storyboard après qu’elles ont été initialement définies en XAML. Si vous avez besoin de recibler une animation vers une autre propriété au moment de l’exécution, créez un storyboard entièrement nouveau avec la nouvelle chaîne de chemin de propriété, exécutez des animations avec le nouveau Storyboard et arrêtez d’utiliser le précédent.

S’applique à

Voir aussi