저처럼 Avalonia와 어색한 사이인 분들을 위해 Markdown 뷰어 개발이라는 예제를 통해 Avalonia를 이용해 쉽게 멀티 플랫폼 데스크탑 개발을 하는 방법을 소개하려 합니다.
강좌에 대한 고민글을 올릴 때는 Avalonia만 다루려 했지만 생각해보니 이 강좌를 들을 분들은 대부분 WPF에 익숙할거란 생각이 들더군요.
Avalonia Markdown 뷰어와 동일하게 동작하는 WPF Markdown 뷰어가 있으면 Avalonia에 대해 이해하기가 훨씬 쉽지 않을까 생각하여 강좌에 WPF를 포함하기로 마음 먹었습니다.
강좌의 내용을 좀 더 디테일하게 소개하자면
-
Codeless 바인딩 지원
코드 없이 컨트롤과 ViewModel간의 속성, 메서드를 바인딩 합니다.
속성의 바인딩은 외부 nuget인 PropertyChanged.SourceGenerator를 이용해서 하고 메서드 바인딩은 직접 구현합니다. -
Codeless 리소스 바인딩 지원
코드 없이 Icon, InputGesture, Hokey, 다국어 지원용 문자열 등 리소스들을 컨트롤에 바인딩 하는 것을 직접 구현합니다. -
간편한 다국어 지원
Codeless 다국어 지원과 MarkupExtension을 이용한 다국어 지원 등을 직접 구현합니다. -
간편한 테마 지원
Avalonia의 버전에 따라 Theme 지원의 방식이 계속 변경되고 있습니다.
최신 버전과 이전 버전과도 차이가 있는데 최신 버전에 맞춰 직접 구현합니다.
물론 커스텀으로 직접 만든 Theme 지원입니다. -
화면을 컴포넌트화 해서 자유롭게 배치하는 기능 지원
비주얼 스튜디오 보면 배치를 마음먹은 데로 어디든지 할 수 있죠.
타이틀 바를 포함한 모든 부분을 자유롭게 배치할 수 있는 방법을 직접 구현합니다. -
쉬운 UserControl 사용
UserControl이 포함되면 데이터를 주고 받는게 번거롭게 됩니다.
가장 쉽게 UserControl을 사용하는 방법을 직접 구현합니다. -
간편한 설정 지원
앱을 커스터마이즈 하기 위해 필요한 설정을 매우 간편하게 지원합니다.
강좌를 다 듣고 나면 외부 라이브러리로 PropertyChanged.SourceGenerator를 사용하는 것을 제외하면 직접 구현한 라이브러리로 매우 쉽게 위에서 지원하는 기능들을 프로젝트에 추가하게 될 것입니다.
많은 기능들이 단 한줄의 코드도 사용하지 않고 지원되기 때문에 코드의 양이 줄어들 겁니다.
강좌는 Avalonia로 직접 기능들을 하나씩 빠르게 구현하면서 설명하는 방식을 사용하겠습니다.
WPF로 구현된 동일한 기능의 코드는 강좌 중 필요할 때마다 보여드리겠습니다.