FrameworkElement.RegisterName Method

Provides an accessor that simplifies access to the NameScope registration method.

Namespace: System.Windows
Assembly: PresentationFramework (in presentationframework.dll)

public void RegisterName (
	string name,
	Object scopedElement
public void RegisterName (
	String name, 
	Object scopedElement
public function RegisterName (
	name : String, 
	scopedElement : Object
You cannot use methods in XAML.



Name to use for the specified name-object mapping.


Object for the mapping.

This method is a convenience method for calling RegisterName. The implementation will check successive parent elements until it finds the applicable NameScope implementation, which is found by finding an element that implements INameScope. For more information about namescopes, see WPF Namescopes.

Calling RegisterName is necessary in order to correctly hook up animation storyboards for applications when created in code. This is because one of the key storyboard properties, TargetName, uses a runtime name lookup instead of being able to take a reference to a target element. This is true even if that element is accessible by reference from the code. For more information on why you need to register names for storyboard targets, see Animating with Storyboards Overview.

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);
            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);
            // 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();
            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.
        private void button2Clicked(object sender, RoutedEventArgs args)
            // Starts the animations. The animation without a specified 
            // target name, heightAnimationWithoutTarget, is applied to
            // button2.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0

Community Additions