WPF – MVVM

WPF SYMBOL

MVVM


나무 위키에서 설명하는 MVVM

WPF에서


WPF에서는 ViewxamlViewModelcs로 완전히 분리된다.

View


xaml로 위젯들을 구성하며 위젯이 표시할 내용을 ViewModel로부터 참조한다.

<UserControl.DataContext>  
    <local:MyClass/>  
</UserControl.DataContext>
XML

위와 같이 DataContextMyClass를 지정하였다.
DataContext가 지정되면 위젯은 바인딩을 통해 클래스의 프로퍼티를 참조하여 내용을 표시할 수 있다.

<TextBlock Text="{Binding Text}"/> 
XML

TextBlock위젯을 추가하고 이 위젯이 MyClassText프로퍼티 텍스트를 표시하도록 바인딩 하였다.

ViewModel


View에서 위젯들이 바인딩하여 표시할 프로퍼티들이 있는 클래스이다.
기본적으로 값이 변경될 때 ViewNotify되어야 View에서 변경된 값으로 새롭게 갱신해서 표시를 해줄 수 있다.
따라서 ViewModel클래스는 INotifyPropertyChanged를 상속 받아야 한다.

public class ViewModelBase : INotifyPropertyChanged  
{  
    public event PropertyChangedEventHandler PropertyChanged;  
  
    protected void OnPropertyChanged( string propertyName )  
    {  
        PropertyChanged?.Invoke( this, new PropertyChangedEventArgs( propertyName ) );  
    }  
}
C#

View에 바인딩된 프로퍼티는 값이 설정될 때마다 PropertyChangedEventHandler를 통해서 View에게 변경된 프로퍼티의 값을 전달한다.

private string _text;  
public string Text;  
{  
    get => _text;  
    set  
    {  
        if ( _text != value )  
        {  
            _text = value;  
            OnPropertyChanged( nameof( Text ) );  
        }  
    }  
}
C#

바인딩된 프로퍼티의 값이 변경될 때 Notify하는 코드이다.

이전글 : WPF – Editor_WPF 프로젝트 추가

0 답글

댓글을 남겨주세요

Want to join the discussion?
Feel free to contribute!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다