2011-01-08 8 views
0

Ok, die Zeit ist reif für mein erstes WPF-Projekt :). Ich arbeite vorher mit Flex und PureMVC und ich weiß, wie Projekt-Setup in RIA wichtig ist. Ich entschied mich, mit MVVM zu arbeiten. Und entschied sich, mit dem PRISM-Framework zu arbeiten. Anwendung ist etwas wie Betriebssystem. Es wird 'Shell' (Elternteil für kleinere Anwendungen) geben. Kleinere Anwendung Ich plane, wie Module zu machen. So plane ich, Struktur des Projektes so etwas zu entwerfen.Meine erste MVVM Application Architecture Setup

Module_A {Ansicht, Ansichtsmodell, Modell, Vermögenswerte} // zum Beispiel Rechner Module_B {Ansicht, Ansichtsmodell, Modell, Vermögenswerte} // Notebook

etc I Prisma doc lesen und Ich sehe, dass für alle diese Module Shell-Projekt sein sollte, und das ist meine Hauptfrage hier.

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

Da diese Schale wird mit Hintergrundbildern (wie Betriebssystem) Vollbild wird direkt mit einigen Funktionen klicken. Ist es ok, eine Ordnerstruktur wie in modulesXYZ for Shell.xaml hier zu erstellen? Ich möchte ein Projekt mit guter Struktur beginnen, daher ist jeder Rat willkommen. Danke

Vielleicht war ich nicht klar. Kann ich Shell verwenden, um ihm einige Funktionen (in MVVM-Manier) hinzuzufügen, z. B. auf Vollbild setzen, immer oben usw. Oder nicht?

Ich möchte Shell in voller Kiosk-Modus sein. Und ich habe mit dem folgenden Code etwas darüber gemacht. Aber wenn ich Alt + Tab, Win-Taste oder andere Taskleiste geht über meine App. Gibt es dafür eine Lösung:

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); 
      } 

     } 

Antwort

1

Die einfachste Möglichkeit, die gewünschten Effekte zu erzielen, ist die Konfiguration der Shell. Insbesondere wird nominell die folgenden Werte in Shell.xaml Einstellung das gewünschte Ergebnis:

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

und wenn diese Eigenschaften ändern müssen dieser Ansatz nicht dann schon mvvm freundlich, da es lediglich eine Ansicht Problem.

+0

Ok danke, Sie führen mich zu einem guten Weg. Aber ich habe ein kleines Problem. Ich einige Details in Frage, können Sie bitte überprüfen. – 1110

+0

Es wäre besser, die Art, wie Ihre Anwendung gestartet wird, zu ändern, als zu versuchen, zu verhindern, dass ein Explorer, der immer läuft, jemals angezeigt wird. Um dies zu tun ** Ersetze ** Explorer mit deiner Anwendung als Logon Shell. Dies ist eine einfache Registrierungseinstellung. –

+0

Es tut mir leid, ich google den ganzen Tag, aber ich kann keine nützliche Erklärung finden. Können Sie einen Link oder einen Code für den Startpunkt angeben, um zu verhindern, dass Benutzer die Anwendung durch Drücken der Tasten verlassen? – 1110

Verwandte Themen