> 백엔드 개발 > C++ > 원칙을 위반하지 않고 WPF의 MVVM 아키텍처에서 새 창을 어떻게 열 수 있습니까?

원칙을 위반하지 않고 WPF의 MVVM 아키텍처에서 새 창을 어떻게 열 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-29 16:03:12
원래의
865명이 탐색했습니다.

How Can I Open New Windows in WPF's MVVM Architecture Without Violating its Principles?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿