Dreamine.Web 1.0.0.0
WPF와 Blazor를 한 코드 흐름으로 연결하고 반복적인 MVVM 코드를 줄이는 오픈소스 FullKit 공식 웹 애플리케이션입니다.
로딩중...
검색중...
일치하는것 없음
LightBulbViewModel.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.MVVM.ViewModels;
2
4
13public sealed class LightBulbModel
14{
23 public bool IsOn { get; set; }
32 public int ToggleCount { get; set; }
33}
34
43public sealed class LightBulbEvent
44{
53 private readonly LightBulbModel _model;
70 public LightBulbEvent(LightBulbModel model) => _model = model;
71
80 public void Toggle()
81 {
82 _model.IsOn = !_model.IsOn;
83 _model.ToggleCount++;
84 }
85
102 public void Set(bool on)
103 {
104 if (_model.IsOn == on) return;
105 _model.IsOn = on;
106 _model.ToggleCount++;
107 }
108}
109
118public sealed class LightBulbViewModel : ViewModelBase
119{
128 private readonly LightBulbModel _model = new();
137 private readonly LightBulbEvent _event;
138
148
157 public bool IsOn
158 {
159 get => _model.IsOn;
160 set
161 {
162 _event.Set(value);
163 RaiseState();
164 }
165 }
166
175 public int ToggleCount => _model.ToggleCount;
176
185 public string StatusText => _model.IsOn ? "ON" : "OFF";
186
195 public void Toggle()
196 {
197 _event.Toggle();
198 RaiseState();
199 }
200
209 private void RaiseState()
210 {
211 OnPropertyChanged(nameof(IsOn));
212 OnPropertyChanged(nameof(ToggleCount));
213 OnPropertyChanged(nameof(StatusText));
214 }
215}