FrameworkElement.RegisterName(String, Object) FrameworkElement.RegisterName(String, Object) FrameworkElement.RegisterName(String, Object) FrameworkElement.RegisterName(String, Object) Method

Definición

Proporciona un descriptor de acceso que simplifica el acceso al método de registro NameScope.Provides an accessor that simplifies access to the NameScope registration method.

public:
 void RegisterName(System::String ^ name, System::Object ^ scopedElement);
public void RegisterName (string name, object scopedElement);
member this.RegisterName : string * obj -> unit
Public Sub RegisterName (name As String, scopedElement As Object)

Parámetros

name
String String String String

Nombre que se debe usar para la asignación de objeto y nombre especificada.Name to use for the specified name-object mapping.

scopedElement
Object Object Object Object

Objeto para la asignación.Object for the mapping.

Ejemplos

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace Microsoft.Samples.Animation.AnimatingWithStoryboards
{


  
    
    public class ScopeExample : Page
    {
        
        private Storyboard myStoryboard;
        private StackPanel myMainPanel;
        private Button button1, button2;
        
        public ScopeExample()
        {
        
            this.Background = Brushes.White; 
            myMainPanel = new StackPanel();
            
            // Create a name scope for the stackpanel. 
            NameScope.SetNameScope(myMainPanel, new NameScope());
            
            myMainPanel.Background = Brushes.Orange;
              
            button1 = new Button();
            button1.Name = "Button1";
            
            // Register button1's name with myMainPanel.
            myMainPanel.RegisterName(button1.Name, button1);
            button1.Content = "Button 1";
            button1.Click += new RoutedEventHandler(button1Clicked);
            myMainPanel.Children.Add(button1);
            
            button2 = new Button();
            button2.Name = "Button2";
            
            // Register button2's name with myMainPanel.
            myMainPanel.RegisterName(button2.Name, button2);
            button2.Content = "Button 2";
            button2.Click += new RoutedEventHandler(button2Clicked);
            myMainPanel.Children.Add(button2);
            
            
            // Create some animations and a storyboard.
            DoubleAnimation button1WidthAnimation = 
                new DoubleAnimation(300, 200, new Duration(TimeSpan.FromSeconds(5)));
            Storyboard.SetTargetName(button1WidthAnimation, button1.Name);
            Storyboard.SetTargetProperty(button1WidthAnimation, new PropertyPath(Button.WidthProperty));

            DoubleAnimation button2WidthAnimation = 
                new DoubleAnimation(300, 200, new Duration(TimeSpan.FromSeconds(5)));
            Storyboard.SetTargetName(button2WidthAnimation, button2.Name);
            Storyboard.SetTargetProperty(button2WidthAnimation, new PropertyPath(Button.WidthProperty));
            
            DoubleAnimation heightAnimationWithoutTarget = 
                new DoubleAnimation(300, 200, new Duration(TimeSpan.FromSeconds(5)));
            Storyboard.SetTargetProperty(heightAnimationWithoutTarget, new PropertyPath(FrameworkElement.HeightProperty));                
            
            myStoryboard = new Storyboard();
            myStoryboard.Children.Add(button1WidthAnimation);
            myStoryboard.Children.Add(button2WidthAnimation);
            myStoryboard.Children.Add(heightAnimationWithoutTarget);
            
            this.Content = myMainPanel;
                           
        }  
        
        
        private void button1Clicked(object sender, RoutedEventArgs args)
        {
        
            // Starts the animations. The animation without a specified 
            // target name, heightAnimationWithoutTarget, is applied to
            // myMainPanel.
            myStoryboard.Begin(myMainPanel);
        
        }
        
        private void button2Clicked(object sender, RoutedEventArgs args)
        {
        
            // Starts the animations. The animation without a specified 
            // target name, heightAnimationWithoutTarget, is applied to
            // button2.
            myStoryboard.Begin(button2);
        
        }        
        
    }
    
      
}

Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes

Namespace Microsoft.Samples.Animation.AnimatingWithStoryboards




    Public Class ScopeExample
        Inherits Page

        Private myStoryboard As Storyboard
        Private myMainPanel As StackPanel
        Private button1, button2 As Button

        Public Sub New()

            Me.Background = Brushes.White
            myMainPanel = New StackPanel()

            ' Create a name scope for the stackpanel. 
            NameScope.SetNameScope(myMainPanel, New NameScope())

            myMainPanel.Background = Brushes.Orange

            button1 = New Button()
            button1.Name = "Button1"

            ' Register button1's name with myMainPanel.
            myMainPanel.RegisterName(button1.Name, button1)
            button1.Content = "Button 1"
            AddHandler button1.Click, AddressOf button1Clicked
            myMainPanel.Children.Add(button1)

            button2 = New Button()
            button2.Name = "Button2"

            ' Register button2's name with myMainPanel.
            myMainPanel.RegisterName(button2.Name, button2)
            button2.Content = "Button 2"
            AddHandler button2.Click, AddressOf button2Clicked
            myMainPanel.Children.Add(button2)


            ' Create some animations and a storyboard.
            Dim button1WidthAnimation As New DoubleAnimation(300, 200, New Duration(TimeSpan.FromSeconds(5)))
            Storyboard.SetTargetName(button1WidthAnimation, button1.Name)
            Storyboard.SetTargetProperty(button1WidthAnimation, New PropertyPath(Button.WidthProperty))

            Dim button2WidthAnimation As New DoubleAnimation(300, 200, New Duration(TimeSpan.FromSeconds(5)))
            Storyboard.SetTargetName(button2WidthAnimation, button2.Name)
            Storyboard.SetTargetProperty(button2WidthAnimation, New PropertyPath(Button.WidthProperty))

            Dim heightAnimationWithoutTarget As New DoubleAnimation(300, 200, New Duration(TimeSpan.FromSeconds(5)))
            Storyboard.SetTargetProperty(heightAnimationWithoutTarget, New PropertyPath(FrameworkElement.HeightProperty))

            myStoryboard = New Storyboard()
            myStoryboard.Children.Add(button1WidthAnimation)
            myStoryboard.Children.Add(button2WidthAnimation)
            myStoryboard.Children.Add(heightAnimationWithoutTarget)

            Me.Content = myMainPanel

        End Sub


        Private Sub button1Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)

            ' Starts the animations. The animation without a specified 
            ' target name, heightAnimationWithoutTarget, is applied to
            ' myMainPanel.
            myStoryboard.Begin(myMainPanel)

        End Sub

        Private Sub button2Clicked(ByVal sender As Object, ByVal args As RoutedEventArgs)

            ' Starts the animations. The animation without a specified 
            ' target name, heightAnimationWithoutTarget, is applied to
            ' button2.
            myStoryboard.Begin(button2)

        End Sub

    End Class


End Namespace

Comentarios

Este método es un método útil para llamar RegisterNamea.This method is a convenience method for calling RegisterName. La implementación comprobará los elementos primarios sucesivos hasta que NameScope encuentre la implementación aplicable, que se encuentra al buscar un elemento INameScopeque implementa.The implementation will check successive parent elements until it finds the applicable NameScope implementation, which is found by finding an element that implements INameScope. Para obtener más información sobre los ámbitos de supuestos, vea ámbitos de código XAML de WPF.For more information about namescopes, see WPF XAML Namescopes.

La RegisterName llamada a es necesaria para enlazar correctamente los guiones gráficos de animación de las aplicaciones cuando se crean en el código.Calling RegisterName is necessary in order to correctly hook up animation storyboards for applications when created in code. Esto se debe a que una de las propiedades de TargetNameguión gráfico,, usa una búsqueda de nombres en tiempo de ejecución en lugar de poder tomar una referencia a un elemento de destino.This is because one of the key storyboard properties, TargetName, uses a run-time name lookup instead of being able to take a reference to a target element. Esto es así incluso si ese elemento es accesible por referencia desde el código.This is true even if that element is accessible by reference from the code. Para obtener más información sobre por qué es necesario registrar los nombres de los destinos de los guiones gráficos, vea información general sobre guiones gráficos.For more information on why you need to register names for storyboard targets, see Storyboards Overview.

Se aplica a

Consulte también: