Programming
[C#,WPF] INotifyPropertyChanged & binding
Lunik
2024. 1. 25. 15:26
반응형
WPF 작업시 XAML에서 코드와 속성값을 1:1 시켜주는 Binding 기능은 굉장히 편리한 기능이다.
xaml 상에서는 해당 컨트롤의 속성값에 아래와 같이 Binding을 추가해주면 된다.
<TextBlock Name="textblockGuiVersion" Text="{Binding UI_VERSION, Mode=OneWay}"/>
코드에서는 아래와 같이 INotifyPropertyChanged를 상속 추가한다. 추가하면, OnPropertyChanged 속성이 없다고 에러가 발생한다. 이코드도 함께 추가하여 인터페이스를 구현한다.
public partial class MainWindow : Window, INotifyPropertyChanged
{
}
public event PropertyChangedEventHandler PropertyChanged;
/// </summary>
/// <param name="propertyName">The property that has a new value.</param>
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
이후 xaml과 바인딩된 변수의 Property set;에 아래와 같이 추가한다.
private string _strVersionUI = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
public string UI_VERSION { get => _strVersionUI; set { _strVersionUI = value; OnPropertyChanged("UI_VERSION"); } }