WPF Jamesnet.Wpf 사용 중 WireDataContext 오류

회사에서 기존에는 Winform으로 대부분의 프로젝트를 진행하다가 요즘 시간이 남아서 Wpf로 전환하는 과정 중에 있습니다.

Wpf로 전환하게 되면서 프로젝트의 유지보수와 협업에 이점을 가져가기 위해서 여러 아키텍쳐를 검색하던 중 재웅님의 Jamesnet.Wpf 라이브러리를 알게 되었고 공부하여 적용해보고 있습니다.

기존 프로젝트에서 Material Design Theme 라이브러리를 이용하고 있어 재웅님의 도움을 받아 App.cs C# 코드에서 테마를 등록하는 코드를 작성하는 방식으로 문제를 해결했었습니다. 하지만 Visual Studio 에서 컴파일 오류는 발생하지 않지만 소스코드 상에서는 에러로 표현되며 Intelisense도 활용하지 못하는 현상이 발생했습니다. 이 부분을 개선하기 위해 기존 프로젝트처럼 App.xaml에 테마를 등록하고 App.xaml.cs에서 this.AddWireDataContext() 를 사용하여 View와 ViewModel을 연결시켜주려 했습니다만 ViewModel이 연결되지 않습니다.

그리고 테마 라이브러리를 사용하게 될 때 따로 프로젝트 단위로 관리하고 싶은데 gpt와 웹 서칭을 통해서 찾아봐도 나오지 않네요ㅠㅠ 혹시 아시는 분 있으면 도움주시면 정말 감사하겠습니다.

1개의 좋아요

안녕하세요 material Design Theme를 사용중이라 하셨는데 라이브러리 이름이라도 알려주시겠습니까?

라이브러리 이름이 MaterialDesignThemes 입니다!

jamesnet.Wpf 라이브러리의 경우

  • Prism
  • CommunityToolkit.Mvvm
  • AutoGridWpf.Core

라이브러리를 조합하여 만든 교육용 라이브러리 입니다.

현재 jamesnet.Wpf는 net7.0-Windows까지만 배포되어있고
net8.0-Windows부터는 Prism과 CommunityToolkit.Mvvm을 사용하지 않고 사용할 수 있는 라이브러리를 개발하신다고 들은 상태입니다.

(개인적으로 사용하면 좋겠지만…) 회사 프로젝트에 도입 하신다면

  • Prism 8.0(9.0 이상부턴 듀얼라이센스)
  • CommunityToolkit.Mvvm
  • AutoGridWpf.Core (선택사항)

직접 설치하여 준비해보시길 바랍니다!

답변 감사합니다.
Prism에 아직 익숙치 않아서 조금 더 공부를 한 뒤에 추가로 적용해봐야겠습니다ㅠㅠ

테마 라이브러리를 하나의 프로젝트에서 디자인 리소스처럼 관리하고 싶은데 이것은 어떤 방법이 없을까요?

 <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
         <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml" />
      </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

위 영역을 generic.xaml에 추가하셔도 되겠지만 오류의 위험있습니다.
그렇기 때문에 안전한 방식 themes/Views, themes/Units폴더에 각 xaml에
직접 사용할 컨트롤만 추가하여 사용하시는게 좋습니다.

1개의 좋아요

적용해보겠습니다. 답변 감사합니다! :blush: