[ObservableProperty]는 MVVM 구조에서 프로퍼티(Data)를 다루는 방법입니다.

 

1️⃣ 공식문서

: 공식 문서를 참고하여 우측 목차를 학습의 기준과 방향으로 설정하고, 단계적으로 학습을 진행합니다.

더보기

📚 Microsoft DocsMicrosoft CommunityToolkit MVVM - ObservableProperty

*우측 목차를 학습 기준으로 합니다.


 

2️⃣ 용어

: 기술 용어의 각 어절은, 기술 개념 설명과 같습니다.

더보기

✔️ [ObservableProperty] 의미

 

Observable = "감지 가능한"으로 해석하면, 좀 더 이해하기 쉽습니다.
Observable + Property = "(변경 상태) 감지 가능한 + 프로퍼티"

 

프로퍼티에 값이 할당되는 것과 같은

변경 사항을 감지(또는 추적, 관찰) 가능한 프로퍼티를 의미합니다.


 

3️⃣ 사용 목적 

: 어떤 문제를 해결 하는지 파악합니다.

더보기

✔️ 사용목적

 

C# MVVM 구조에서, [ObservableProperty] 어트리뷰트의 사용 목적은,

프로퍼티의 변경 사항을 감지하여, 다음 동작을 진행하도록 합니다.

 

➡️ ObservableProperty는 프로퍼티 값 변화 → 이벤트 트리거 → 연결 동작 실행 의 패턴을 통해

프로퍼티 값이 바뀌면 연결된 어떤 로직이 자동으로 실행되게 해주는 기능 입니다.


예를 들면 프로퍼티 값이 바뀌면

UI에 반영되기도 하고, DB에 저장되기도 하고, 서버로 전송되기도 하고, 스타일이 바뀌거나 알림창이 뜹니다.

 

 

✔️ 예시

 

시나리오 목적  설명
View 자동 갱신 UI에 값 반영 TextBox에 바인딩된 Name 속성이 변경되면 TextBlock에 자동 출력
DB 저장  데이터 저장 Name 속성이 변경되면 OnNameChanged() 메서드에서
DB에 INSERT/UPDATE 실행
서버 전송  네트워크 전송 Temperature 값이 변경되면 IoT 서버로 MQTT/HTTP 요청으로 데이터 전송
임시 저장  캐시/임시 저장 DraftContent 속성이 변경될 때마다 로컬 임시 파일에 저장
UI 스타일 변경 스타일/테마 적용 IsWarning 속성이 true로 바뀌면 Label의 Foreground 색을 빨간색으로 변경
알림창 표시  팝업/알림 표시 Status 속성이 "에러"로 바뀌면 MessageBox.Show() 실행

 

4️⃣ 사용법

: C# 필드, 프로퍼티

더보기

✔️ 사전 지식

 

OOP의 등장 배경을 기반으로 접근 제어자의 사용 이유와, 필드와 캡슐화 그리고 프로퍼티 이론이 학습되었다고 가정하고 진행합니다. 

 

4. 캡슐화 - 프로퍼티

1. 참고자료더보기1. 영상 링크 https://youtu.be/zgeCwYWzK-k?si=rJFngC_y71cOcVSm[C# 기초 강의] Ch 09. 프로퍼티    2. 용어 체크리스트 맴버, 필드: 프로퍼티의 실제 값프로퍼티: 객체의 상태 값 캡슐화, 접

basiclike.tistory.com

 

 

✔️ [ObservableProperty] 어트리뷰트 사용법

[ObservableProperty]
private string name;

 

C#에서는 객체 내부의 값을 저장하기 위해 필드(field)를 사용합니다.
그리고 캡슐화된 필드를 외부 객체가 접근할 수 있도록 프로퍼티(property)를 제공합니다.

 

MVVM 패턴의 C# 애플리케이션에서는

View와 ViewModel 간의 느슨한 결합(loose coupling)을 유지하면서도  프로퍼티의 변경 사항을 UI에 알리기 위해,

개발자가 반복적이고 복잡한 소스코드(예: INotifyPropertyChanged 구현)를 직접 작성해야 했습니다.

 

이러한 반복 작업을 간소화하고 생산성과 유지보수성을 향상시키기 위해,
CommunityToolkit.Mvvm 패키지에서는 Source Generator 기반의 기능을 제공합니다.

 

사용 방법은 매우 간단합니다.
필드 위에 [ObservableProperty] 어트리뷰트를 붙이기만 하면,
빌드 시점에 View에서 바인딩 가능한 프로퍼티와 PropertyChanged 이벤트 호출 코드가 자동으로 생성됩니다.

 

이를 통해 개발자는 코드 자동완성(intellisense)과 함께 더욱 간편하고 효율적으로 MVVM 프로퍼티를 구현할 수 있습니다.


 

5️⃣학습관점

: 자동완성을 완벽한 해결책이 아닙니다.

더보기

1. [ObservableProperty] 어트리뷰트를 사용하면, Source Generator가 다음과 같은 코드를 자동으로 생성합니다

  • 필드 → 프로퍼티 선언
  • PropertyChanged 이벤트 발생 코드

즉, [ObservableProperty] 한 줄만으로도 ViewModel에 바인딩 가능한 속성을 매우 간단하게 구현할 수 있습니다.

 

 

2. 하지만, MVVM Toolkit의 자동 생성 코드만으로는 모든 프로젝트 요구사항을 구현할 수 없기 때문에,

기본적인 C# 코드로 INotifyPropertyChanged를 수동으로 구현하는 방법을 배우고,

내부 동작 원리를 이해하는 것이 매우 중요합니다.

 

이러한 기초 지식을 통해,

자동 생성 기능의 동작 방식과 한계를 정확히 이해하고,

각 상황에 맞는 적절한 선택을 할 수 있게 됩니다.


 

6️⃣ 예제 소스코드

: Chapter 2. 해당되는 예제들의 소스코드를 확인할 수 있습니다.