Dreamine.MVVM.Locators.Wpf 1.0.7
Dreamine.MVVM.Locators.Wpf 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음

Dreamine MVVM Locator 시스템의 WPF 통합 레이어입니다.

이 패키지는 Dreamine.MVVM.Locators를 WPF 런타임에 연결하기 위한 기능을 제공합니다.

주요 역할:

  • View ↔ ViewModel 자동 바인딩
  • ViewModel 기반 View 동적 생성
  • Region 기반 ContentControl 네비게이션
  • ContentControl 전용 네비게이터 제공

무거운 프레임워크 없이 WPF 환경에서 Locator 기반 구성을 적용하려는 경우를 위한 패키지입니다.

➡️ English Version


목적

Dreamine.MVVM.Locators.Wpf는 다음 요소를 연결하는 WPF 런타임 브리지입니다.

  • Dreamine.MVVM.Locators
  • WPF FrameworkElement
  • XAML Attached Property
  • Region / ContentControl 네비게이션 패턴

즉, WPF 애플리케이션에서 View와 ViewModel을 실제 런타임에 연결하는 역할을 담당합니다.


주요 구성 요소

ViewModelBinder

WPF AttachedProperty 기반 ViewModel 자동 연결 헬퍼입니다.

역할:

  • AutoWireViewModel AttachedProperty 제공
  • ViewModelLocator.Resolve(view.GetType())를 통해 ViewModel 생성
  • 생성된 ViewModel을 DataContext에 할당
  • ViewModel 인스턴스로부터 View를 네이밍 규칙 기반으로 생성

예시:

<Window
xmlns:locator="clr-namespace:Dreamine.MVVM.Locators.Wpf"
locator:ViewModelBinder.AutoWireViewModel="True">
</Window>

RegionBinder

ContentControl을 Region 이름으로 등록하고 탐색하는 AttachedProperty 바인더입니다.

역할:

  • Region 이름 기준 ContentControl 등록
  • Region 키로 탐색 수행
  • ViewModelBinder.ResolveView를 사용해 View 생성 후 표시
  • region 참조를 weak reference 로 유지하고 control 이 unload 되거나 이름이 바뀌면 등록 해제

예시:

<ContentControl
local:RegionBinder.RegionName="MainRegion" />
RegionBinder.Navigate("MainRegion", viewModel);

RegionBinder는 등록된 ContentControl을 강하게 참조하지 않습니다. 따라서 닫힌 Window 또는 unload 된 control 이 static region registry 때문에 계속 살아남는 일을 방지합니다.


ContentControlNavigator

ContentControl 기반의 단순한 INavigator 구현체입니다.

역할:

  • ViewModel에 대응하는 View 생성
  • 생성한 View를 ContentControl.Content에 설정

예시:

var navigator = new ContentControlNavigator(MainContentControl);
navigator.Navigate(viewModel);

RegionBinderHelper

RegionBinder.RegionName 기준으로 ContentControl을 찾는 VisualTree helper 입니다.

역할:

  • WPF root element 하위 visual tree 검색
  • 일치하는 region control 반환
  • root 가 null 이면 ArgumentNullException 발생
  • region 이름이 비어 있으면 ArgumentException 발생

예시:

ContentControl? region = RegionBinderHelper.FindRegionControl(window, "MainRegion");

View 해석 규칙

ViewModelBinder.ResolveView(object viewModel)는 여러 네이밍 규칙을 순차적으로 시도합니다.

지원되는 대표 규칙:

  • ViewModelsViews
  • ViewModelView
  • ViewModel 제거
  • ViewModelsPages
  • PageModelsPages
  • PageModelPage

따라서 WPF 프로젝트마다 조금씩 다른 네이밍 스타일도 수용할 수 있습니다.


런타임 참고 사항

  • WPF helper 는 FrameworkElement를 생성하고 갱신하므로 UI thread 에서 호출하는 것을 전제로 합니다.
  • 라이브러리 예외 메시지는 로그/콘솔 파싱을 위해 이모지 없는 일반 텍스트를 사용합니다.
  • 등록되지 않은 region 탐색은 region 이름을 포함한 InvalidOperationException을 발생시킵니다.

요구사항


설치

dotnet add package Dreamine.MVVM.Locators.Wpf

또는 프로젝트 파일에 직접 추가:

<PackageReference Include="Dreamine.MVVM.Locators.Wpf" Version="1.0.3" />

아키텍처 위치

이 패키지는 Dreamine MVVM 스택의 WPF 통합 레이어에 해당합니다.

Dreamine.MVVM.Locators
Dreamine.MVVM.Locators.Wpf
WPF Views / Regions / Navigation

사용 대상

다음 경우에 사용하면 됩니다.

  • Dreamine MVVM 기반 WPF 애플리케이션을 만들 때
  • XAML에서 ViewModel 자동 바인딩이 필요할 때
  • ViewModel로부터 View를 동적으로 생성해야 할 때
  • 대형 프레임워크 없이 가벼운 Region / Content 네비게이션이 필요할 때

WPF 외 환경에서는 사용 대상이 아닙니다.


License

MIT License