Windows Forms에서 MVVM 하기

【C#】WinFormsでMVVMしたいからReactivePropertyにバインドする - Qiita

카카오톡 오픈채팅방 ‘닷넷 C# 개발자 모임’ 에서 ‘야스오’ 님이 공유해주신 글입니다.

Windows Forms의 최고 단점이 Binding은 가능한데 WPF처럼 Property Binding이 어렵다거나, DataContext가 없어서 Command를 지원하지 못한다는 점이었는데요.

위 클래스를 통해 PropertyBinding을 하면서, .NET 7 Windows Forms 부터 추가된 Command를 이용하면 Windows Forms에서도 완전한 MVVM이 가능해지는 게 불가능한 미래는 아닌 것 같습니다.

7 Likes

Winform에서 Binding 이라니~ 재미있네요.
Winform 개발을 주로 하다보니 더욱 관심이 가네요.
좋은 소식 감사합니다~

3 Likes

그러면 CommunityToolkit.Mvvm도 같이 사용할 수 있겠네요?

3 Likes

Windows Forms도 원래 DataBinding이 가능했습니다.

Property Binding 같은 경우에도 DataTable이나 BindingList 같은 것을 만들어서 Row Item 1개나, Items Count를 1개를 두는 방식으로만 했어야 했기에 조금 불편했으며, Design Time에서 Property Grid를 이용해서 Binding 을 조금 불편하게 했어야 했습니다.

사실 안타까운 마음은 Windows Forms에 여러 MVVM이나, Command를 지원해 준다고 해도, Windows Forms를 개발하는 개발자들의 마인드가 변화해서 MVVM을 받아들일 수 있을지는 미지수? 인 것 같습니다…ㅠㅠ

2 Likes

Toolkit 자체야 Windows Forms와는 별개로 그냥 Console 프로젝트에도 설치해서 Source Generator로 생성하던 직접 기능을 구현하던 종속된 기술은 아니었습니다.

물론 Notify가 필요하냐 안필요하냐는 따져봐야겠지만, INotifyPropertyChanged 자체는 Windows Forms에서도 BindingList에 속하는 컬렉션 Item 의 경우에도 동일한 메카니즘으로 동작은 했었습니다.

5 Likes