문제

WPF 응용 프로그램에서 탐색을 위해 Prism을 사용하고 있습니다. 몇 가지 모듈이 있으며 각 모듈은 부트 스트랩퍼의 IOC 컨테이너를 사용하여 전송 된 일반적인 명령을 통해 기본 메뉴에 등록합니다. 메뉴 항목은 내비게이션을위한 공통 명령에 바인딩되며 일부 지역에서 올바른보기를 열게됩니다. 모두 프리즘 사이트를 통해 찾은 권장 사항을 기반으로합니다.

내 문제는 이제 주 영역에서 Viewa 또는 ViewB를 열고 싶을 때 조건이있는 모듈이 있다는 것입니다. 예 : 고객 모듈이 있고 메인 뷰에서 고객 모듈을 열 수있는 "고객"메뉴 항목이 있다고 가정 해 봅시다. 그리고 조건이 있습니다 : 활동적인 고객이 있으면 메뉴 항목을 클릭 할 때 CustomerDetailSview를 열고 싶습니다. 그렇지 않으면 CustomersAdminView를 열고 싶습니다.

이것을 해결하기위한 권장되는 접근법은 무엇입니까? 나는 몇 가지 옵션을 보았지만, 그들 모두가 약간 해킹된다고 생각합니다. 이제 저는 위의 예에서 MasterCustomerview가 될 것을 만들기 위해 노력하고 있습니다. 그런 다음이보기는 조건을 확인하고 admin 내부의 세부 정보를 제공하는 USERCONTROL을 열어줍니다. 그래도이 솔루션에 만족하지는 않습니다. 합법적 인 접근 방식일까요? 더 나은가요?

도움이 되었습니까?

해결책

내가 프리즘을 중심으로 구축 한 메뉴 시스템에서, 나는보기 유형이 아닌 대의원을 통과 할 수있는보기를 등록하는 모듈에 대한 과부하를 제공했습니다. 이 대의원에서는 관련 정보를 대의원에게 전달하여 시야를 만드는 방법을 결정할 수 있습니다.

이것은 약간 복잡하지만 몇 가지 관련 예제를 줄 수 있습니다.

public interface IMenuRegistry
{
     void RegisterMenuItem(string title, 
                           Func<RelevantInformation, Object> executeFunction, 
                           Func<RelevantInformation, bool> canExecuteFunction);

     void RegisterMenuItem(string title, Type viewType);
}

여기에 주목하십시오. 현재 고객을 포함 할 수있는 "관련 정보"에 전달되는 유형이 있습니다. 사용자가 메뉴 항목을 클릭하면 대의원을 호출하고 결정을 내리는 데 필요한 모든 정보를 전달합니다. 그것은보기 객체를 반환 한 다음 어떤 영역이 적절한지에 넣을 수 있습니다.

또한 모듈이 명령의 작동 방식과 유사하게 "CanExecute"대의원을 전달할 수 있습니다 (실제로 모든 메뉴 등록을 가져 와서 명령으로 전환합니다). 이런 식으로 MODULE의 일부 조건으로 인해 메뉴 항목이 유효하지 않으면 모듈이 비활성화 될 수 있습니다.

실제로 이것은이 문제를 해결하는 여러 가지 방법 중 하나 일 뿐이지 만 이것은 내가하는 일에 가깝습니다. 바라건대 당신은 그것이 도움이되거나 문제를 해결하는 대체 방법에 대해 생각할 수 있기를 바랍니다.

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