2011-01-08 6 views
0

자, 이제 첫 번째 WPF 프로젝트에 시간이 다가 왔습니다. :). Flex와 PureMVC를 사용하기 전에 RIA에서 프로젝트 설정이 중요한지 알고 있습니다. MVVM으로 작업하기로 결정했습니다. PRISM 프레임 워크로 작업하기로 결정했습니다. 응용 프로그램은 운영 체제와 비슷합니다. '쉘'(소규모 응용 프로그램의 경우 상위)이 있습니다. 더 작은 어플리케이션 모듈과 같은 것을 만들 계획입니다. 그래서 저는 이런 식으로 프로젝트 구조를 디자인 할 계획입니다.내 첫 번째 MVVM 응용 프로그램 아키텍처 설정

Module_A {뷰, 뷰 모델, 모델, 자산} 예를 계산기에 대한 // Module_B {뷰, 뷰 모델, 모델, 자산} // 노트북

등 내가 프리즘 문서를 읽고 나는이 모든 모듈을위한 parrent가 쉘 프로젝트 여야한다는 것을 알고 있으며, 이것이 나의 주요한 질문이다.

Parrent_Project {App.xaml, Bootstrapper.cs, Shell.xaml}

이 쉘 (운영 시스템과 같은) 배경 이미지를 전체 화면 할 것이기 때문에, 바로 일부 기능을 클릭합니다. Shell.xaml을위한 modulesXYZ와 같은 폴더 구조를 만들면 괜찮습니까? 좋은 구조로 프로젝트를 시작하고 조언을 환영합니다. 감사합니다

아마도 나는 분명하지 않았습니다. Shell을 사용하여 전체 화면이나 항상 맨 위에 놓는 것처럼 일부 기능 (MVVM 방식)을 추가 할 수 있습니까?

전체 키오스크 모드로 쉘을 만들고 싶습니다. 그리고 나는 folowing 코드로 그것에 대해 언젠가했다. 그러나 alt + tab 키를 누르면 키 또는 다른 작업 표시 줄이 내 응용 프로그램을 지나치게됩니다. 이것에 대한 해결책이 있습니까 :

public class Interop 
    { 
     [DllImport("user32.dll")] 
     public static extern bool SetForegroundWindow(IntPtr hWnd); 

     [DllImport("user32.dll")] 
     public static extern IntPtr GetForegroundWindow(); 

     public static IntPtr GetWindowHandle(Window window) 
     { 
      return new WindowInteropHelper(window).Handle; 
     } 
    } 

public Shell() 
     {    
      InitializeComponent(); 



      IntPtr window = Interop.GetWindowHandle(this); 
      IntPtr focused = Interop.GetForegroundWindow(); 
      if (window != focused) 
      { 
       Interop.SetForegroundWindow(window); 
      } 

     } 

답변

1

원하는 효과를 얻는 가장 간단한 방법은 셸을 구성하는 것입니다.

<Window ... WindowStyle="None" WindowState="Maximized" Topmost="True> 

을하고 이러한 속성을 변경할 필요가없는 경우는 순수하게보기 문제로 다음이 접근 방식은 이미 친화적 MVVM있다 : 특히, Shell.xaml에서 다음 값을 설정하면 명목상으로 원하는 결과를 제공 할 것입니다.

+0

좋은 방법으로 나를 안내해 주셔서 감사합니다. 하지만 사소한 문제가 하나 있습니다. 나는 문제의 일부 세부 사항을 확인해 주시겠습니까? – 1110

+0

응용 프로그램이 시작되는 방식을 변경하는 것이 항상 실행되는 Explorer를 방지하는 것보다 낫습니다. 이렇게하려면 ** 탐색기를 로그온 셸로 응용 프로그램으로 바꿉니다. 이것은 간단한 레지스트리 설정입니다. –

+0

죄송합니다. 하루 종일 Google을 사용하지만 유용한 설명을 찾을 수 없습니다. 시작 지점에 대한 링크 또는 코드를 제공하여 사용자가 키를 눌러 응용 프로그램을 나가는 것을 방지 할 수 있습니까? – 1110

관련 문제