2012-08-06 2 views
4

프리즘 로그인 화면과 관련된 많은 질문과 답변을 검색하고 발견했습니다. 그들은 프리즘이 모듈을로드하기 전에 로그인 화면을 보여주는 데 관심이있는 것 같습니다. 나는 그것에 대한 욕망이 없다.PRISM 로그인 화면

나는 셸을 가지고 있으며 셸에서 영역으로 작동하는 다양한 컨테이너가있는 눈금이 있습니다. 이것은 내 사용자가 로그인했을 때 프로그램이 보이게하는 방법입니다.

이 화면에 도달하기 전에 사용자 이름, IP 주소 및 포트를 묻는 전체 응용 프로그램 창을 연결 모듈로 가져 오십시오. 연결 단추. 내가 찾는 문제는이 창으로 이동하여 전체 창을 차지할 수있는 적절한 위치가 없다는 것입니다. 이 작업을 수행 할 수있는 유일한 방법은 모든 행과 열에 걸쳐있는 콘텐트 컨트롤 영역을 그리드에 배치하는 것입니다.이 방법은 나머지 영역에 오버레이하는 방식으로 작동합니다.

그러나이 방법은 엉성한 것처럼 보이지만 이보다 더 좋은 방법이 있습니다. 내 쉘을 메인 애플리케이션 컨트롤러가 먼저 로그인 모듈 뷰를로드하는 단일 contentcontrol이어야하고, 연결되었을 때, 연결된 "이벤트"가 발생하면 정규 "셸"뷰가 그 위치에서로드 될 수 있습니다 로그인보기가 언로드되고 처리됩니까?

답변

1

로그인 이벤트를 만듭니다 (EventAggregation에서 읽은 것으로 가정). 그런 다음 로그인 대화 상자에 대한 view/viewmodel을 포함하는 로그인 모듈을 만들고 모듈 자체의 클래스를 만들고 initialize 메서드에서 ShowLogin 이벤트를 구독하고 Login 뷰를 만듭니다. 그런 다음 부트 스트 래퍼 (또는 셸)에서 ShowLogin 이벤트를 가져 와서 게시하십시오.

0

StockTrader 샘플 앱에 따라 특정보기를 자동 내보내기하도록 애플리케이션을 구성 할 수 있습니다. 우리 응용 프로그램 중 하나를 사용하여이 작업을 수행합니다. 내(StockTrader 앱에 있음)으로 채워지는 "로그인보기"를 내 보냅니다. 기본적으로 셸에는 1 개의 영역이 있으며 ...이 영역을 내 로그인보기로 채 웁니다. 동시에 MainPage은 같은 지역에 등록됩니다. 로그인보기를 표시 한 다음 로그인이 성공하면 지역 관리자를 사용하여 MainPage으로 내비게이션을 요청합니다.

0

셸에서 전체 창으로 확장해야하는보기가있는 영역을 만듭니다. 여기에 아이디어 :

<Grid> 
    <Grid > 
     <Grid.RowDefinitions> 
      .... 
     </Grid.RowDefinitions> 

     <!--ROW 1 -->    
     <!--ROW 2--> 
    </Grid> 
<!--****THIS IS THE REGION****--> 
    <ContentControl x:Name="ShellExpandAllRegions" prism:RegionManager.RegionName="{x:Static staticRegions:RegionConstants.ShellExpandAllRegions}" Panel.ZIndex="100"/> 
</Grid> 

등록 귀하의 모듈 이니셜 (IModule)

RegionManager.RegisterViewWithRegion(RegionConstants.ShellExpandAllRegions,typeof(LoginView)); 

귀하의 ViewModel

RegionManager.RequestNavigate(RegionConstants.ShellExpandAllRegions, new Uri(typeof(LoginView).Name, UriKind.Relative)); // The handler for a login event 
,

이 영역에서보기가로드되면 전체 창을 차지해야합니다.

관련 문제