WPF, MVVM, Prism 및 MEF를 사용하는 응용 프로그램에서 작업 중입니다.MVVM, PRISM 및 MEF를 사용하여 사용자 요청없이 뷰 모델에서 UI 상호 작용을 처리하는 방법
요청 탐색이있는 탐색, 지역 관리자를 사용하는보기 관리가있는 컨트롤러 및 이벤트 집계기를 통해 이벤트를 결합하여 단일 창에서 응용 프로그램을 실행 중입니다. 저는 Stock Trader RI가 어떻게 일하는 것과 비슷한 첫 번째 접근법을 사용하고 있습니다. UI (통화 중 표시기)와 상호 작용할 뷰 모델 코드가 사용자에 의해 시작될 때이 기능이 훌륭하지만 장면 뒤에서 시작될 때 문제가 발생할 수 있습니다.
이것이 제대로 구현되지 않은 것 같습니다. 그러나 유효한 시나리오가 있다고 생각합니다. 내 특정 예제는 로그인과 관련이 있습니다.
현재 응용 프로그램이 셸을 시작하고로드합니다. 로그인보기는 쉘의 주 컨텐츠 영역으로로드됩니다. 사용자가 "로그인"을 클릭하면 사용중 표시기가 나타나고 클라이언트 응용 프로그램 서비스 로그인이 실행됩니다. 로그인이 완료되면 사용중 표시기가 사라지고 화면이 사용자의 홈 화면으로 이동합니다.
사용자가 로그인 버튼을 클릭하면 내비게이션 로그인 및 탐색이 시작되기 때문에 정상적으로 작동합니다.
이제 로그인 양식에서 자동 로그인을 선택할 수있는 새로운 요구 사항이 생겼습니다. 다음에 사용자가 앱을 시작하면 로그인보기가 나타나지 않고 로그인이 뒤에서 일어날 것입니다.
이제 자동 로그인 기능을 호출하려는 경우 아무런 문제가 없습니다.이 자체로 UI 상호 작용이 없으므로 정상적으로 작동합니다. 그러나 로그인에는 몇 초가 걸리고 사용중인 표시기를 표시하려고합니다.
문제는 어디에서 자동 로그인 호출을 시작합니까? 셸 뷰 모델 생성자? 쉘 뷰 모델 PartImportsSisisfied 구현? 이 위치들 중 어느 곳에서나, 나의 사용중 표시기를 포함하고있는 쉘 뷰는 아직 실제로로드되지 않았다. 결과적으로 지역 및 지역 관리자와 같이 필요한 리소스가 없습니다. 이전 사용자가 자동 로그인 (있어이 부분은 파악)하는 경우는
If yes then
Show busy indicator
Attempt to auto login
If auto login was success
Hide busy indicator
Navigate to user home screen
Else
Hide busy indicator
Navigate to login screen
Else
Hide busy indicator
Navigate to the login screen
어떤 아이디어가 크게 감사하고 있습니다
확인 : 그래서 내가이를 구현하기위한 좋은 방법이 될 일을.
충분합니다. 좋은 지적입니다. 현실적으로 나는 그 장소를 사용하지 않을 것이지만, 작곡 도중 Prism/MEF에서 진입 점을 설명하기 위해 사용했다.그래서 내 질문은 당신에게 돌아갑니다. ShellViewModel에서 ILoadable.Load를 호출하는 것은 무엇입니까? – BernicusMaximus
@BernicusMaximus 추가 포인트 추가 ... –