1. WixSharp 소개 Windows Desktop 어플리케이션 배포용 설치 파일을 작성해 보신 분들은 wix toolset을 한 번 쯤 사용해 보셨을겁니다. 오픈소스에 무료로 제공되는 강력한 툴이지만 XML tag를 일일이 작성해줘야하는 번거로움이 있습니다. 특히 설치 dialog 커스터마이징을 위해서 컨트롤 하나하나의 좌표를 일일이 지정해서 배치하고 확인을 위해서는 msi 파일 생성 후 실행해 보아야만 확인이 되는 등의 불편함도 있습니다. WixSharp은 이런 불편한 XML 태그 작성을 C# 코드로 작성 할 수 있도록 해주는 아주 훌륭한 도구입니다. 특히 설치 대상 파일의 harvest를 위해 heat 커맨드 사용법과 필터 방법을 따로 배울 필요가 없이 C# Linq 를 사용해 간단하게 구현이 ..
MVVM 패턴으로 개발을 하다보면 서로 다른 ViewModel 끼리나 ViewModel에서 View로 1:1 혹은 1:N으로 이벤트를 전달해야 하는 경우들이 많습니다. 이 경우 static class를 생성해서 전역에서 접근 가능한 event를 만들어 처리하거나 service class를 만들어서 의존성 주입을 통해 여러 ViewModel에서 접근 가능한 event 변수를 만들어 처리하는 등 여러가지 방법이 있습니다만 CommunityToolkit에서 제공하는 WeakReferenceMessenger 클래스를 사용하면 간단히 Pub/Sub 형태의 이벤트 큐를 구현 할 수 있습니다. 단순해서 사용하기 편리하지만 실무에서는 event 스트림에 debounce time을 적용한다거나 이벤트 버퍼를 ring 버..
지난번 글에서 ObservableObject를 상속받는 MainWindowViewModel class를 ViewModels 폴더에 생성하고 MainWindow.xaml 뷰의 DataContext에 바인딩 하는것 까지 설명을 했습니다. 자, 이렇게 생성된 ViewModel에 멤버 변수들을 선언하고 이것들을 View에 TextBox 컨트롤에 바인딩을 먼저 해보겠습니다. 기존 MVVM 패턴으로 코딩할때 가장 짜증스러운 부분이 View와 Binding하기위해 멤버변수를 선언하고 값이 변경되면 PropertyChange 이벤트를 Notify해주는 코드를 변수 하나 하나 마다 아래와같이 선언해 줘야했습니다. namespace MyTestApp.ViewModels { public class MainWindowView..
※. Visual Studio 2022 기준 스크린 샷입니다. 1. Visual Studio를 열고 새로운 WPF 프로젝트를 하나 생성합니다. WPF로 검색해서 WPF Application 프로젝트 템플릿을 찾아서 선택합니다. 프로젝트 생성 경로와 솔루션 이름 프로젝트명을 지정합니다. 여기서는 .Net 6.0 이상을 기준으로 설명하므로 6.0을 선택합니다. 프로젝트 생성이 완료되면 Solution Explorer에 아래와같이 생성된 솔루션과 프로젝트 내의 파일을 확인합니다. 2. NuGet Package 설치하기 NuGet Package Manager에서 아래 패키지들을 설치하거나 Solution Explorer에서 프로젝트(MyTestApp)를 double-click해서 프로젝트 파일을 열어 아래의 P..