[WPF] DependencyProperty WPF 2012. 3. 19. 16:49

의존성 프로퍼티는 다른 입력 값에 의해 속성 값을 변경해주는 곳에 이용이 된다. 여기에서 애니메이션이나 데이터 바인딩 등에 이용이 되고, 입력 값은 테마, 속성, 데이터바인딩, 내이메이션, 리소스 등의 값을 말하고 있다.

기본 형은 다음과 같다.

public static readonly DependencyProperty PropertyName = DependencyProperty.Register("PropertyName", typeof(Type), typeof(Control),  new FrameworkPropertyMetadata(new PropertyChangedCallback(PropertyChangedEventName)));

여기에서의 값은 get/set을 이용한 메서드를 이용하여 사용한다.

먼저 TextBlock 두개, TextBox, Button을 하나 생성 해 주고 다음 코드를 실행하면 다른 요소의 속성이 바뀌는 것을 확인 할 수가 있을 것이다.

public static readonly DependencyProperty PropertyName = DependencyProperty.Register("name", typeof(String), typeof(Window1), new FrameworkPropertyMetadata(new PropertyChangedCallback(OnTextChangePropertyChanged)));

        public Window1()
        {
            InitializeComponent();
        }

        public String _txtstring
        {
            get
            {
                return (String)GetValue(PropertyName);
            }
            set
            {
                SetValue(PropertyName, value);
            }
        }

        private static void OnTextChangePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Window1 userNamecontrol = d as Window1;
            string newText = (string)e.NewValue;
            string oldText = (string)e.OldValue;
        

            userNamecontrol.textBlock1.Text = newText;
            userNamecontrol.textBlock2.Text = oldText;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            this._txtstring = textBox1.Text;
        }