MVVM WPF에서 새 창 열기: 인터페이스 고려 사항
뷰 모델 내에서 새 창 인스턴스를 만드는 동안 MVVM 원칙을 위반하는 것은 일반적입니다. 창을 여는 복잡성을 추상화하는 인터페이스를 구현합니다. 그러나 인터페이스를 ChildWindow와 같은 특정 창 유형에 긴밀하게 결합하면 유연성이 제한됩니다.
일반 인터페이스 솔루션
이 문제를 해결하려면 보다 일반적인 인터페이스를 고려하십시오. 디자인:
interface IWindowService { void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new(); }
이 인터페이스를 사용하면 창 유형을 일반 매개변수로 지정할 수 있으므로 서비스에서 사용자가 원하는 모든 창 유형을 처리할 수 있습니다. 통과합니다.
WindowService 구현
WindowService 구현은 다음과 같습니다.
class WindowService : IWindowService { public void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new() { var window = new TWindow(); window.DataContext = dataContext; window.Show(); } }
모델 사용량 보기
뷰 모델에서 서비스를 사용하여 다음과 같이 새 창을 열 수 있습니다. 필요:
public void OpenChildWindowCommandExecute() { _windowService.OpenWindow<ChildWindow>(this); }
결론
이 일반적인 인터페이스 접근 방식을 사용하면 MVVM 원칙을 위반하지 않고 뷰 모델에서 새 창을 만들고 열 수 있습니다. 모든 창 유형을 사용할 수 있게 하여 유연성을 제공하고 코드 재사용 및 유지 관리성을 촉진합니다.
위 내용은 원칙을 위반하지 않고 WPF의 MVVM 아키텍처에서 새 창을 어떻게 열 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!