WPF에서 INotifyPropertyChanged 귀차니즘 해결

WPF의  MVVM 구조는 멋지다. GUI 개발에서 glue code를 많이 제거해준다.

특히 Model 의 변화가 자동으로 View 에 반영되는 구조는 매우 유용하다.

다만, 모델의 프로퍼티가 변경 되면 propertyChanged를 이용해서 변경된 사실을 통보해줘야 한다.

요게 은근히 귀찮다.

public class Person : INotifyPropertyChanged
{
    string givenNames;
    public string GivenNames
    {
        get { return givenNames; }
        set
        {
            if (value != givenNames)
            {
                givenNames = value;
                OnPropertyChanged("GivenNames");
            }
        }
    }
}

위 코드처럼 프로퍼티를 일일이 만들어 줘야 하고, set 프로퍼티 안에서 일일이 OnPropertyChanged()를 호출해 줘야 한다. 하나 두개면 상관없지만 많으면 코드도 길어지고 개 귀찮..

하지만 역시 해결책은 있다!

https://github.com/Fody/PropertyChanged

이거 하나면 해결 끝~

ps. fody 라이브러리는 저거 말고도 엄청 다양한 플러그인이 있다

Advertisements

WFP XmlParserException 에러

인터넷에서 받은 예제 소스를 빌드하려고 하니 아래와 같은 에러 발생

A first chance exception of type ‘System.Windows.Markup.XamlParseException’ occurred in PresentationFramework.dll

Additional information: ‘connectionId 설정에서 예외가 throw되었습니다.’ 줄 번호 ‘6’ 및 줄 위치 ‘5’

인터넷에 보니 다양한 원인이 있다고 하는데 내 경우는 아래와 같이 해서 해결했다.

살펴보니, 솔루션안에 있는 특정 프로젝트가 x86으로 빌드되게 되어 있고, 그 프로젝트를 참조 하는 프로젝트는 Any CPU라서 그렇다.

프로젝트 Properties > Build > Platform Target 을 Any CPU 에서 x86으로 변경하고 다시 리빌드하니 해결됨

… 그나저나 이 이슈에서 VS의 에러 메세지는 아무런 도움이 안되네 -_-;;

관련 링크