프리즘의 내비게이션 제어에서 동적으로보기를로드하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1678423

  •  16-09-2019
  •  | 
  •  

문제

메뉴 항목 클릭의 클릭에 이벤트 그래퍼를 사용하여 이벤트를 게시하는 메뉴 컨트롤을 사용하여 응용 프로그램을 통해 내비게이션을 구현했습니다. 아래 그림과 같이,

this.eventAggregator.GetEvent<ViewRequestedEvent>()
                    .Publish(new BusinessObject.Model.MenuModel
                    {
                        Module = "Dashboard",
                        PresenterClass = "DashboardViewModel"
                    });

내 응용 프로그램의 대부분의 모듈은이 이벤트의 가입자입니다. 필터를 사용하여 모듈과 관련된 이벤트 만 구독합니다.

this.eventAggregator.GetEvent<ViewRequestedEvent>()
            .Subscribe(LoadViewRequest, ThreadOption.UIThread, true, i => i.Module == "Dashboard");

보기 요청은 다음과 같이 처리됩니다.

private void LoadRequestedView(MenuModel menuItem)
{
    try
    {
        IDashboardViewModel viewModel = this.container.Resolve(Type.GetType(menuItem.PresenterClass)) as IDashboardViewModel;
        this.regionManager.Regions["ViewRegion"].Add(viewModel.View);
        this.regionManager.Regions["ViewRegion"].Activate(viewModel.View);
        this.eventAggregator.GetEvent<ViewNotificationEvent>().Publish(menuItem.Description);
    }
    catch (ResolutionFailedException) { }
}

이 구현을 어떻게 평가합니까? 그것이 짜증나다고 생각한다면, 그것을 개선하거나 더 나은 대안을 제안하도록 도와주세요.

도움이 되었습니까?

해결책

이 모델과의 우려가 분리 될 수있는 특정 부족이 있다고 생각합니다. 나는 일반적으로 쉘에 대한 프리젠 테이션을 유지하려고 노력합니다. 내가 이것을 어떻게 구현하는지에 대해서는이 질문을 참조하십시오. 사물을 단순화하고 모듈에서 멀리 떨어진 지역 관리자의 아이디어를 추상화합니다.

Prism의 응용 프로그램과 모듈을 CompositeWPF로 통합합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top