2016-05-19 14 views
1

Ich bin versucht, eine Version des UWP-App für das TipCalc Probe zu erstellen hier: https://github.com/MvvmCross/MvvmCross-Samples/tree/master/TipCalcMvvmCross mit Template10

Es ist schon eine UWP-Version in der Probe, die gut funktioniert. Ich versuche jedoch, Template10 (https://github.com/Windows-XAML/Template10) zu verwenden, und ich habe Probleme, die beiden Bibliotheken zusammenzuarbeiten.

MvvmCross möchte, dass ich die OnLaunched Methode ändern, die einen Verweis auf den Stamm Frame hat. Allerdings Vorlage 10 stattdessen abstrahiert diese Methode Aussetzen OnStartAsync, die keine solche Bezug hat ...

Es gibt eine Überschreibung in Vorlage 10 für CreateRootFrame, die wie die richtige Stelle scheint die mvvmcross App zu initialisieren, aber das doesn scheint nicht so zu funktionieren, wie ich es erwartet habe ...

Obwohl die gestartete App zur entsprechenden Seite navigiert, scheint sie auch das Ansichtsmodell zu initialisieren (ein Haltepunkt auf der Start-Methode in der zugehörigen VM wird getroffen)), ist die Seite selbst leer.

die Baumstruktur beiden Anwendungen Vergleich zeigt, dass, während die bestehende UWP App aus der Probe hat einen Rahmen:

Visual Tree of working app

meine Template10 App lädt einen Modal Dialog:

enter image description here

Ich verzweigte das ursprüngliche Beispielprojekt und fügte die Version der Schablone 10 hinzu, wenn Sie es für selbst versuchen möchten: https://github.com/selaromdotnet/MvvmCross-Samples

Kann jemand MvvmCross mit Vorlage 10 integrieren? Hast du irgendeine Ahnung, was ich falsch mache, und einen Ratschlag für die besten Praktiken bei der Verwendung dieser beiden Bibliotheken zusammen?

+0

Ich habe auch versucht, die start.Start() -Methode zu OnStartAsync zu verschieben, aber wenn ich habe, bekomme ich diesen Fehler: Fehler beim Konvertieren von Wert \ "Type \" in Type 'Template10.Services.SerializationService.JsonSerializationService + Container'.Eine schnelle Suche schlägt vor, dass dies ein Fehler ist, der behoben wurde, aber auf die neueste Version der Vorlage 10 aktualisiert hatte keinen Effekt und ich bekomme das gleiche Ergebnis – SelAromDotNet

+0

eigentlich ich falsch lag, bekomme ich nicht das gleiche Ergebnis beim Aktualisieren auf den neuesten Template10 (Vorschau) -Version, aber stattdessen wird das CreateRootElement überhaupt nicht aufgerufen und ist tatsächlich veraltet, daher wird meine App nie initialisiert und ich bekomme einen Null-Referenzfehler. also ja definitiv verloren hier, würde jede Einsicht schätzen! – SelAromDotNet

Antwort

1

hmm es stellt sich heraus, dass die ModalDialog das erwartete Verhalten für Template10 ist, entsprechend den aktuellen docs hier: https://github.com/Windows-XAML/Template10/wiki/Docs-|-Bootstrapper

Ich bin nicht vertraut genug mit Template10 zu sagen, warum dies der Fall ist, aber es funktioniert auch sagen Sie kann dies durch zwingende ändern OnInitializeAsync, was ich auch tat, tut das regelmäßige UWP Projekt den ursprünglichen Rahmen in der gleichen Art und Weise der Wiederherstellung:

public override async Task OnInitializeAsync(IActivatedEventArgs args) 
    { 
     Frame rootFrame = Window.Current.Content as Frame; 

     // Do not repeat app initialization when the Window already has content, 
     // just ensure that the window is active 
     if (rootFrame == null) 
     { 
      // Create a Frame to act as the navigation context and navigate to the first page 
      rootFrame = new Frame(); 


      if (args.PreviousExecutionState == ApplicationExecutionState.Terminated) 
      { 
       //TODO: Load state from previously suspended application 
      } 

      // Place the frame in the current Window 
      Window.Current.Content = rootFrame; 
     } 

     if (rootFrame.Content == null) 
     { 
      var setup = new Setup(rootFrame); 
      setup.Initialize(); 
     } 
     await Task.CompletedTask; 
    } 

Dies tat der Trick! Ich bin sicher, dass ich noch einen Weg zu gehen habe (ich glaube, dass Template10 seinen eigenen Weg hat, den Zustand wiederherzustellen, also sollte ich es wahrscheinlich nicht hier machen) ...

aber diese Veränderung hat mich schließlich dazu gebracht eine funktionierende App WENN du mehr darüber weißt, was ich hier falsch mache oder was ich stattdessen tun sollte, würden deine Kommentare sehr dankbar sein, danke!