2014-02-07 4 views
1

저는 프리즘 응용 프로그램이 상당히 크기 때문에 새로운 기능을 적용하려고합니다. 이 기능은 직렬 포트 매개 변수 선택입니다.범위가 지정된 영역 및보기 검색

내 viewmodel의 IsActive 속성을 true으로 설정하면 직렬 포트 이름 목록을 새로 고침하고 싶습니다. 이것은 샘플에서 행복하게 성취되었지만 현실은 ... 다르다.

내가 수정중인보기는 "PageRegion"으로 표시된 부모 영역에 포함 된 ItemsControl ("SettingsRegion"으로 표시)에 포함되어 있습니다. 설정 영역에는 다른 모듈의 설정보기가 있습니다.

이 경우 SyncActiveAwareAttribute을 사용하고 싶지만 범위가 필요합니다.

여기 뷰 삽입 (regionmanager.Regions["blahblah"].Add(....)을 사용해야합니까, 아니면보기 검색 (regionManager.RegisterWithRegion(...)을 사용하여 작동시킬 수 있습니까?

내가 주사를 사용해야하는 경우 ...

는 다른 모듈이 자신의 견해 주입하기 위해 범위 IRegionManager 인스턴스에 대한 참조를 필요 감안할 때 :

  1. 어떻게 최고를 지역 관리자를 다른 모듈로 가져 오는 방법은?
  2. 언제 그 지역이 존재하는지 확인하기 위해 주사를해야합니까?
  3. 발견과 함께 믹스 앤 매치 주사를 할 수 있습니까? 큰 리팩터링을 피하고 싶습니다.

답변

3

범위 지정 영역을 만들려면 뷰 삽입을 사용해야합니다. 관련 정보는 다음 MSDN 프리즘 장 # 7 링크에서 찾을 수 있습니다 Creating Multiple Instances of a Region

범위가 지정된 지역 관리자

  • When to Use View Discovery vs. View Injection
  • createScopeRegionManager 과부하 매개 변수를 설정하여 반환 예 : Reg 이온 .Add() 메서드입니다. 당신은 당신이 일반적으로 추가 같은 장소에서이 작업을 수행하거나 지역 해당 모듈의 초기화에 같은() 방법으로 보기를 등록 할 다음을 공유하는 그런

    IRegionManager scopedRegionManager = scopedRegion.Add(view, null, createScopeRegionManager); 
    

    , 하나의 가능한 방법 는 파라미터로서 scopedRegionManager와() 이벤트를 게시하는 다른 모듈 scopedRegionManager는 것이다. 그러나 모듈 종속성 및 모듈 인스턴스화 순서에주의해야합니다. 또 다른 방법은 scopedRegionManager사전에 저장하는 것입니다. 다음과 같은 CodePlex의 스레드에서 더 많은 관련 정보를 찾을 수 있습니다

    그것은 어떤 문제가되지 않습니다 다른 보기에 등록을 보기 발견를 사용하여 해당 존재하지 않는 것 범위가 지정된 영역.

    이 도움이 되었기를 바랍니다.

    감사합니다.

관련 문제