Загружаем каталог…
Загружаем каталог…
10/8 분량. 오늘부터 과제 2, MVVM. 앱 모양이랑 동작은 어제랑 완전히 똑같다. 코드 위치만 싹 바꿨다. 왜 바꾸나 어제까지 MainWindow.xaml.cs 에 센서 구독, 기록 추가, 시작/정지가 다 들어 있었다. 문제는 이게 화면이랑 붙어 있어서 화면 없이 테스트할 수가 없고, 화면을 바꾸면 로직까지 같이 건드려야 한다는 거. 그래서 셋으로 나눈다. Model : 데이터만. SensorRecord ViewModel : 화면에 보여줄 값이랑 할 수 있는 동작. SensorViewModel View : 화면. MainWindow.xaml 폴더도 Models , ViewModels , Services , Converters 로 나눴다. ViewModel은 화면을 모른다 어제 MainWindow.xaml.cs 에 있던 걸 거의 그대로 SensorViewModel 로 옮겼다. public class SensorViewModel : ViewModelBase { public void Start() { _sensor.Start(); Status = "측정 중"; } } 여기엔 TextBlock 이나 Button 같은 게 하나도 없다. 경고 색도 ViewModel은 IsOver (bool)만 알고, 빨간색으로 칠하는 건 View 쪽 Converter가 한다. 3일차에 센서가 화면을 몰랐던 거랑 같은 구조를 한 단계 위에서 하는 느낌. 반복 코드 줄이기 프로퍼티마다 "같으면 return, 바꾸고, 알리기"를 계속 쓰는 게 귀찮아서 부모 클래스로 뺐다. protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string? name = null) { if (EqualityComparer<T>.Default.Equals(field, value)) return false; field = value; OnPropertyChanged(name); return true; } 그러면 프로퍼티가 이렇게 짧아진다. public string Status { get => _status; set => SetProperty(ref _status, value); } 남은 거 코드 비하인드엔 이제 이것만 남았다. private void StartButton_Click(object sender, RoutedEventArgs e) => _vm.Start(); 버튼을 ViewModel 메서드에 이어 주는 것뿐인데, 이것도 내일 Command로 없앨 예정.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
[WPF 13일 공부] 7. MVVM 시작, 코드 비하인드 비우기. 10/8 분량. 오늘부터 과제 2, MVVM. 앱 모양이랑 동작은 어제랑 완전히 똑같다. 코드 위치만 싹 바꿨다. 왜 바꾸나 어제까지 MainWindow.xaml.cs 에 센서 구독, 기록 추가, 시작/정지가 다 들어 있었다. 문제는 이게 화면이랑 붙어 있어서 화면 없이 테스트할 수가 없고, 화면을 바꾸면 로직까지 같이 건드려야 한다는 거. 그래서 셋으로 나눈다. Model : 데이터만. SensorRecord ViewModel : 화면에 보여줄 값이랑 할 수 있는 동작. SensorViewModel View : 화면. MainWindow.xaml 폴더도 Models , ViewModels , Services , Converters 로…