첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ Storyboard 클래스 : 코드 구현하기

----------------------------------------------------------------------------------------------------

using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Media.Animation;

using System.Windows.Media;

 

namespace WpfApplication1

{

    /// <summary>

    /// 테스트 페이지

    /// </summary>

    public class TestPage : Page

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - TestPage()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public TestPage()

        {

            // Page 객체에 대해 NameScope 객체를 설정합니다.

            NameScope.SetNameScope(this, new NameScope());

 

            #region StackPanel 객체를 생성한다.

 

            StackPanel stackPanel = new StackPanel();

 

            stackPanel.HorizontalAlignment = HorizontalAlignment.Center;

 

            #endregion

 

            Content = stackPanel;

 

            #region Border 객체를 생성한다.

 

            Border border = new Border();

 

            border.Margin          = new Thickness(0, 60, 0, 20);

            border.BorderBrush     = Brushes.Black;

            border.BorderThickness = new Thickness(1);

            border.Background      = Brushes.Gray;

            border.Padding         = new Thickness(20);

 

            #endregion

 

            stackPanel.Children.Add(border);

 

            // Storyboard.TargetName 첨부 속성 설정을 위해 Border 객체의 명칭을 등록한다.

            RegisterName("border", border);

 

            #region ThicknessAnimation 객체를 생성한다.

 

            ThicknessAnimation thicknessAnimation = new ThicknessAnimation();

 

            thicknessAnimation.Duration     = TimeSpan.FromSeconds(1.5);

            thicknessAnimation.From         = new Thickness(1, 1, 1, 1);

            thicknessAnimation.To           = new Thickness(28, 14, 28, 14);

            thicknessAnimation.FillBehavior = FillBehavior.HoldEnd;

 

            Storyboard.SetTargetName(thicknessAnimation, "border");

            Storyboard.SetTargetProperty(thicknessAnimation, new PropertyPath(Border.BorderThicknessProperty));

 

            #endregion

 

            #region Storyboard 객체를 생성한다.

 

            Storyboard storyboard = new Storyboard();

 

            storyboard.Children.Add(thicknessAnimation);

 

            #endregion

 

            border.Loaded += delegate(object pstoryboard, RoutedEventArgs e)

            {

                storyboard.Begin(this);

            };

        }

 

        #endregion

    }

}

----------------------------------------------------------------------------------------------------

※ Page 객체에 NameScope 객체를 설정하고, 설정한 NameScope 객체를 통해 Border 객체에 명칭을 부여하는 코드가 있는 이유

   - ThicknessAnimation 객체에 Storyboard.TargetName 첨부 속성에 Border 객체를 지정해야 하는데

     Storyboard.SetTargetName 메소드는 객체 참조를 지정하지 못하고 객체명을 지정하기 때문이다.

※ Silverlight에서는 Storyboard.SetTarget 메소드가 있기 때문에 Border 객체를 참조할 수 있다.

Posted by 사용자 icodebroker

댓글을 달아 주세요