[WPF] DependencyProperty
의존성 프로퍼티는 다른 입력 값에 의해 속성 값을 변경해주는 곳에 이용이 된다. 여기에서 애니메이션이나 데이터 바인딩 등에 이용이 되고, 입력 값은 테마, 속성, 데이터바인딩, 내이메이션, 리소스 등의 값을 말하고 있다.
기본 형은 다음과 같다.
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;
}