챗지피티로 예시를 배우고 있는 중인데 지금 매우 혼란스럽습니다.
public class TextViewModel : INotifyPropertyChanged
{
private readonly TextModel textModel;
public TextViewModel()
{
textModel = new TextModel();
}
private string text = "";
public string Text
{
get { return text; }
set
{
if (text != value)
{
text = value;
NotifyPropertyChanged(nameof(Text));
}
}
}
private ICommand loadCommand;
public ICommand LoadCommand
{
get
{
if (loadCommand == null)
{
loadCommand = new RelayCommand(param => Load());
}
return loadCommand;
}
}
private void Load()
{
var openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
{
textModel.Load(openFileDialog.FileName);
Text = textModel.Text;
}
}
private ICommand saveCommand;
public ICommand SaveCommand
{
get
{
if (saveCommand == null)
{
saveCommand = new RelayCommand(param => Save());
}
return saveCommand;
}
}
private void Save()
{
var saveFileDialog = new SaveFileDialog();
if (saveFileDialog.ShowDialog() == true)
{
textModel.Text = Text;
textModel.Save(saveFileDialog.FileName);
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
해당 예시의 코드로 사용하라고 권장하고 있는데,
프로퍼티 바로 위에 멤버를 선언한다거나, 생성자가 중간에 끼어있고 메소드가 프로퍼티 사이에 끼어 있는 등
매우 일반적으로 보기 힘든 형태의 코드의 예시더군요.
물론 기능 단위로 분리한다는 개념 자체는 알겠습니다만..
이게 wpf 작업을 할 때는 가장 읽기 쉬운 방식인가요?
지저분하긴함. maui 코드 보니깐 요즘에는 애트리뷰트를 이용해서 프로퍼티, 커맨드 코드 생성해서 쓰는것 같음
INotifyPropertyChanged 구현체로 mvvm 패턴 쓰는게 wpf의 꽃임. 그냥 윈폼짜듯 똥싸지르듯 해도되는데 나중에 유지보수 생각하면 감당못함
순서야 맘에안들면 바꾸면되지