c#,WPF를 공부하려고 하는데 공부 방법을 모르겠습니다 ㅠ

비전공자에 개발직군은 아닙니다.
독학으로 현재 javascript, 리액트를 초급수준으로 할 줄 압니다.
그런데 C#을 하려고 하는 이유는 C#으로 많은게 가능하다고 들어서에요.

일단 개인적으로 unity로 게임개발도 하고 앱개발도 하고 싶습니다.
그리고 현재 회사가 C# 머신비전 프로그램을 메인으로 개발하고 있어 회사에도 도움이 될 것 같습니다.
미적감각이 다른분들보다는 나아서 WPF 프론트엔드쪽을 돕고있는데 아무래도 지식이 없다보니.. 구글링으로 복붙수준이네요.
WPF자체로는 적당히 검색해가면서 할 수 있지만 MVVM모델을 적용해보려고 하니 전혀 모르겠더라구요.
그래서 강의를 찾아보니 WPF, MVVM패턴 등에 대한 국내 강의자료는 전무하네요..
어떻게 시작을 해야할지 모르겠습니다 ㅠ

MSDN이나 영문자료를 듣는 방법뿐일까요?
(MSDN 보면 개념적으로 이해가 전혀 되지 않습니다 ㅠ)

3 Likes

카테고리 변경해 드렸습니다.

1 Like

예전에 비슷한 댓글을 쓴 적이 있어서 공유합니다.

MVVM의 개념에 대한 설명이나 설계 지향점 같은 것은 사실 영문까지 갈 것도 없이 한글로 된 게시물도 상당히 많습니다. 데이터 바인딩이나 커맨드 등 WPF에서 MVVM 패턴에 자주 사용되는 기능 역시 마찬가지입니다. 혹시 찾기 어려우시다면 링크에 나와있는 게시물을 순서대로 읽어보시는 것도 괜찮을 것 같네요.

게시물로 기초적인 지식을 쌓았다면 그 다음에는 우선 간단한 토이 프로젝트를 해보는 것은 어떨까요? 직접 만들다 보면 생각지도 못한 부분에서 막히는 부분이 튀어나오기도 하고, 그걸 해결하면서 경험이 쌓이기도 합니다. 한 번쯤 생각해 봤던 프로젝트가 있다면 그것을 MVVM 패턴을 이용해 구현해 보면 도움이 될 듯합니다.

WPF에서는 MVVM 패턴 뿐만 아니라 WPF라는 프레임워크에 대한 이해도 있어야 합니다. 글을 읽어 보니 아마 XAML 디자인도 업무 분야에 포함되는 것 같은데 이쪽은 사실 MVVM 패턴과는 관련이 적고 WPF와 XAML에 대한 공부를 하셔야 합니다.

그리고 하나 염두에 두셔야 하는 부분은 게임 개발이나 앱, 머신비전 등 다양한 도메인에 C#을 활용하려고 하시는 것 같은데, 언어가 같더라도 도메인마다 요구되는 부분은 판이하게 다를 수 있다는 점입니다.

가령 MVVM 패턴을 공부하려고 하시지만 게임 분야에서는 클라이언트 개발팀 등 데스크탑 앱을 개발할 만한 분야에서도 MVVM 패턴은 잘 활용하지 않는 것으로 알고 있습니다. 또한 c#을 이용한 앱 개발은 자마린이나 마우이, 우노 같은 크로스 플랫폼 쪽으로 가야 할 텐데 여기서는 C# 언어의 숙련도도 중요하지만 모바일 애플리케이션의 환경이나 생태계에 대한 이해나 UX 같은 부분도 중요한 고려사항이 되지 않을까 생각합니다.

7 Likes

Microsoft Learn이 아주 잘 되어 있습니다.

C# 학습에 대한 코스는

WPF는

MVVM(Xamarin.Forms 코스이지만 이것을 참고할 수 있습니다)은

학습이 가능합니다.

5 Likes

정성스러운 답변 너무 감사드립니다
써주신 글 참조하여 열심히 공부해보겠습니다

2 Likes

마소 MSDN을 보다보니 설명이 짧아 이해가 되지 않았는데 좀더 진득히 해보겠습니다

2 Likes

WPF에서 MVVM은 필수가 아니며 어떤 경우에는 MVVM을 사용시 오히려 기능 작동에 불필요한 코드만 늘어나서 MVVM을 사용하나 안하나 차이가 없거나 오히려 손해인 경우도 있습니다. 그러니 시중의 WPF 책 입문서 하나 구입하셔서 쭉 따라해보시는 것 만으로도 WPF 초기 학습은 충분합니다.

각종 패턴은 그 패턴이 왜 만들어졌는지를 이해하고 적재적소에 사용해야 의미가 있지, 그렇지 않은 경우에는 불필요한 장신구가 될 가능성이 있습니다. 예를 들면, 1인 개발자에 구현체가 딱 1개라서 인터페이스를 사용할 필요가 없는데 인터넷 포스팅 보고 각종 패턴 등을 적용하기 위해 인터페이스 남발해서 개발한다던지, 코드와 UI와의 결합성이 매우 높은 프로그램을 만드는데 MVVM Only로 개발한다던지 하는 것들은 오히려 시간낭비가 될 수 있습니다. 오히려, 클린 아키텍쳐에 쏟을 노력을 해당 도메인에 대한 공부에 투자하는 것이 더 나은 결과를 만들어낼 수도 있지요.

분야가 머신비전쪽이시라면 MVVM이 그다지 적합하지 않을 가능성도 좀 있어보입니다. UI와 결합도가 높거나 미디어를 제어하는 쪽은 풀 MVVM 보다는 적절한 데이터 바인딩과 커맨드 기능만 사용하는 것이 보다 구현하기 쉽고 유지보수에도 좋을 수 있습니다.

농담삼아 링크 하나 남겨봅니다.
코딩 초보 vs 고수.jpg

5 Likes

kaki104 님의 Microsoft.Toolkit.Mvvm을 이용한 간단한 프레임워크 도 참고하시면 좋습니다. 최근 Prism Library 강좌도 게재되어 있습니다.

위 링크에도 WPF에 대한 기본개념이 잘 설명되어 있습니다.

3 Likes

무조건 MVVM이 좋은것만은 아닌것 같군요…!! 감사합니다

1 Like

MVVM에 관한 실전 예제는 아래 소스 참고 하시면 됩니다.

MahApps.Metro/src/MahApps.Metro.Samples at develop · MahApps/MahApps.Metro (github.com)

2 Likes