문제

이 질문은 다음에도 게시되었습니다. Codeplex의 Prism 사이트.

요청에 따라 모듈을 로드하는 데 약간의 어려움이 있습니다. 여러분이 저에게 깨달음을 주실 수 있기를 바랍니다.나는 사용하고있다 v2 #7.

내가 달성하고 싶은 것은 다음과 같습니다.

1) 2개의 영역이 있습니다. 하나는 모듈을 인스턴스화하는 버튼용(MenuRegion)이고 다른 하나는 모듈을 표시하는 영역(MainRegion)입니다.MenuRegion에서는 한 번에 하나의 모듈만 표시됩니다.
2) 모듈은 디렉토리에서 찾을 수 있습니다.
3) MenuModule 모듈은 MenuRegion과 연관되어 있으며 모듈 이름을 표시하는 버튼을 생성합니다.버튼 중 하나를 클릭하면 해당 모듈이 로드되어 MainRegion에 표시됩니다.
4) 행동:
a) ModuleA 버튼을 클릭하면 ModuleA가 표시됩니다.사용자가 ModuleA에 데이터를 입력하고 데이터가 저장되지 않은 상태로 남아 있습니다.
b) ModuleB 버튼을 클릭하면 ModuleB가 표시됩니다.사용자가 ModuleB에 데이터를 입력하고 데이터가 저장되지 않은 상태로 남아 있습니다.
c) ModuleA 버튼을 클릭하면 이전에 입력한 정보와 함께 ModuleA가 표시됩니다.

내 가정이 틀렸다면 수정해 주시고 다른 제안도 부탁드립니다.

1) MainRegion은 ContentControl이어야 하므로 한 번에 하나의 모듈만 표시됩니다.
2) 디렉토리에서 사용 가능한 모듈에 대한 ModuleInfo를 얻으려면 내 카탈로그의 "GrouplessModules"를 열거해야 한다고 생각합니다.
3) 모듈을 로드하려면 myModuleManager.LoadModule(moduleName)을 호출해야 할 것 같습니다.

마지막으로 내 질문은 다음과 같습니다.

1) MenuModuleView 생성자에 moduleManager를 매개변수로 포함해야 합니까?
2) 사용 가능한 모듈을 열거하기 위해 MenuModuleView 내부에서 카탈로그에 액세스하려면 어떻게 해야 합니까?
3) MenuModuleView에서 모듈을 열거하면서 버튼을 만들고 ModuleInfo를 버튼의 Tag 속성에 할당합니다.이렇게 하면 모듈을 로드하는 클릭 이벤트가 하나만 있습니다.이 올바른지?나에게는 약간의 해결 방법 냄새가 난다.

도와 주셔서 정말로 고맙습니다!!!

도움이 되었습니까?

해결책

1) menumoduleView의 생성자에 ModuleManager를 매개 변수로해야합니까?

기술적으로는 가능합니다.그러나 실제로는 이렇게 해도 뷰에 대한 기본 생성자를 정의하고 싶을 것입니다.그렇지 않으면 디자이너에서 보기가 작동하지 않습니다.따라서 UI 구성 요소에 대한 종속성을 전달하려면 속성을 사용하는 것이 좋습니다.

2) 사용 가능한 모듈을 열거하기 위해 MenumoduleView 내부에서 카탈로그에 액세스 할 수있는 방법은 무엇입니까?

당신은 Prism에 의존할 것입니다. IModuleEnumerator 인터페이스와 종속성 주입은 뷰에 모듈 열거자를 제공하는 일을 담당합니다.Unity 컨테이너와 함께 Prism을 사용한다고 가정하면 다음과 같습니다.

[Dependency]
public IModuleEnumerator ModuleEnumerator 
{
    get; set;
}

3) menumoduleView에서 모듈을 통해 열거 할 때 버튼을 만들어 버튼의 태그 속성에 moduleInfo를 할당합니다.이런 식으로, 나는 클릭 이벤트를 한 번만 로드하면 모듈.이 올바른지?냄새가 난다 나에게 약간의 해결 방법 ..

각 버튼에 동일한 WPF 명령을 발생시키고 대신 ModuleInfo ~로 Button'에스 CommandParameter 재산.다시 한번 Prism은 복합 시나리오에서 이 작업을 깔끔하게 수행하는 데 도움이 되는 인프라를 갖추고 있습니다.참조 DelegateCommand 수업.

마지막으로, 모듈을 느리게 로드할 수는 있지만 언로드할 수는 없다는 점에 유의하세요.이를 위해서는 다음이 필요합니다. AppDomain 격리는 완전히 다른 물고기 주전자입니다.

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