날씨가 많이 덥지요?
예전부터 포스팅 하려고 했었던 글이였는데 이제야 글을 쓰게 됐네요.
지금에서 보면 많은 분들이 이미 알고 있기때문에 쓸모없는 글이 될 수도 있겠네요.

그래도 혹시 모를 초보자들분을 위해서 간단하고 짧게 설명하겠습니다.

실버라이트 MVVM 하면 떠오르는것 중 하나가 바인딩이죠.
이번엔 .xaml 에서말고 .cs 에서 바인딩을 해보도록 하겠습니다.

사실 동적으로 바인딩 해야될 경우가 분명히 있거든요.
모르시는 분들은 알아두면 좋은 팁이 될 수도 있습니다.


    public class Test
    {
        public Test()
        {
            TextBox txt = new TextBox();

            System.Windows.Data.Binding bind = new System.Windows.Data.Binding("MyProperty");
            txt.SetBinding(TextBox.TextProperty, bind);
            txt.DataContext = new MyClass() { MyProperty = "test" };
        }
    }


    public class MyClass : INotifyPropertyChanged
    {
        private string _MyProperty = string.Empty;
        public string MyProperty
        {
            get { return _MyProperty; }
            set
            {
                _MyProperty = value;
                FirePropertyChanged("MyProperty");
            }
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;
        public void FirePropertyChanged(string name)
        {
            if (PropertyChanged == null)
                return;

            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }

        #endregion
    }


위와같이 .cs 에서 바인딩을 쉽게 하실 수 있습니다.
간단히 소스설명을 하자면


System.Windows.Data.Binding bind = new System.Windows.Data.Binding("MyProperty");

에서 MyProperty는 쉽게 얘기해서 할당할 속성값입니다.
그리고 이 속성값을 TextBox의 Text 속성에다가 할당하겠다는 의미가 됩니다.

바인딩은 속성에 할 수 있으며, 이 속성은 INotifyPropertyChanged 를 구현해서 값이 변하거나 할때 알려주어야 합니다.
그래야지 변경된 값이 자동적으로 바인딩되거든요.

이상 간단한 팁아닌 팁이였습니다.
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


 

티스토리 툴바