2016-11-16 1 views
0

다른 프리즘 기능을 배우는 중입니다. 이제 새로운 창이 열립니다. 내 응용 프로그램 쉘에 마스터 영역과 세부 영역이 있습니다. 쉘의 마스터 영역에는 세부 정보 영역의 속성을 클릭하면 표시되는 항목이있는 DataGrid가 있습니다. 필요한 것은 마스터 영역의 항목을 두 번 클릭하여 창 인스턴스를 새로 만드는 것입니다. 그리고 모든 새 창이 닫힐 때까지 활성 상태를 유지할 수 있으므로 마스터 영역의 다른 항목을 클릭하여 다른 창을 열 수 있습니다. 사전 MVVM - 프리즘 시간에 Prism Mvvm Mef 대화 형 작업 창 열기 새 인스턴스

, 아마 같은 것을 할 것 :

ICollection<Window> MyWindows = new List<Window>(); 
    var wnd = MyWindows.SingleOrDefault(x => x.Name == id.ToString()); 
    if (wnd == null) 
    { 
     wnd = new MyWindow(this, id); 
     MyWindows.Add(wnd); 
    } 
    wnd.Show(); 

을하지만은 노 이동

는 같은 것을 사용했다 ... 쉘의 뷰 모델과 프리즘에서 내 셸의 InteractionRequestTrigger xaml :

<prism:InteractionRequestTrigger SourceObject="{Binding CyberPopUpViewRequest, Mode=OneWay}"> 
    <prism:PopupWindowAction> 
     <prism:PopupWindowAction.WindowContent> 
      <views:CyberPopUpView /> 
     </prism:PopupWindowAction.WindowContent> 
    </prism:PopupWindowAction> 
</prism:InteractionRequestTrigger> 

하지만 하나의 창만 만들 수 있습니다.

답변

3

는 그러나 이것은 당신이보기 모델에서 코드를 직접 넣어 줄 경우는,

참 ... 쉘의 뷰 모델과 프리즘에서 더-이동하지 않습니다. (즉, 종속성으로 주입 그리고 테스트 할 때 모의로 대체 할 수 있음) 서비스를 : 당신이 (숨기기 읽기) : 넣어하지만 완전히 괜찮아

internal class WindowManager : IWindowManager 
{ 
    public void CreateWindow(string id) 
    { 
     Window wnd; 
     if (!_myWindows.TryGetValue(id, out wnd)) 
     { 
      wnd = new MyWindow(Application.Current.MainWindow, id); 
      _myWindows[ id ] = wnd; 
     } 
     wnd.Show(); 
    } 

    private Dictionary<string, Window> _myWindows = new Dictionary<string, Window>(); 
} 
+0

덕분에 내가 생각하지 않았다,이 체크 아웃합니다 서비스 창 만들기. 새 창에서 새 레이아웃에 새 프리즘 영역을 정의 할 수 있습니까? – VladacusB

+0

나는 그것을 한번도 시도한 적이 없지만 그것이 효과가있을 것이라고 생각합니다. – Haukinger