[WPF] ViewModel에서 Model value 설정방법

public class AgeData
{
    public int age= 24;

    public int Age
    {
        get => age;
        set => age = value; 
    } 
}

AgeData.cs 추가 및 수정없이(이벤트 추가 등등…),
ViewModel에서 AgeData.cs의 age의 값을 변경하고 싶습니다. (“age=24”)

 public class WindowViewModel : BaseViewModel // PropertyChanged.Fody 사용
{
    AgeData WhatAge = new AgeData();

    public int GetSetAge { get; set; }

    public WindowViewModel() => GetSetAge = WhatAge.Age;
}

ViewModel에서 AgeData를 인스턴트해서 사용하고 있습니다.( AgeData WhatAge = new AgeData(); )
이렇게 사용할 경우 AgeData.cs에 있는 ( AgeData ).age값은 변경이 안됩니다.
(인스턴트 시킨 ‘WhatAge’ 의 age값이 변경 됩니다. )

저장소 : [깃허브]


  1. View에서 “age값이 변경되었다고(TextBox의 value)” ViewModel에 알립니다.
  2. ViewModel에서 “변경된 age값을” Model에 전달합니다.
  3. Model에서 age를 갱신합니다.(AgeData.age의 value 변경)
1개의 좋아요

?ㅅ?

WhatAge.Age 의 값을 변경시키는 코드는 어디있어욤?ㅂ?

2개의 좋아요

GetSetAge 속성을 다음처럼 변경하여야 합니다.

public int GetSetAge
{
    get => WhatAge.Age;
    set => WhatAge.Age = value;
}

PropertyChanged.Fody에서 위와 같이 해도 GetSetAge의 변화를 이벤트로 통지하는지는 확인해보셔야 하고요(지금은 그런지 잘 기억이 안나네요 ^^)

별도로… 필드는 public으로 노출하면 안되며(public int age → private int age) 대문자를 소문자로(WhatAge → whatAge 또는 _whatAge)로 사용하는게 좋습니다.

2개의 좋아요

네 감사합니다.
적용해보겠습니다.

1개의 좋아요