Angenommen, ich habe zwei ViewModels und einen Bildschirmleiter in meiner Anwendung.Übergeben von Daten vom Bildschirm zum Bildschirmleiter
public class ShellViewModel : Conductor<IScreen>, IShell
{
public ShellViewModel()
{
ShowConnectionScreen();
}
public void ShowConnectionScreen()
{
ActivateItem(new ConnectionViewModel());
}
public void ShowSetupScreen()
{
ActivateItem(new SetupViewModel());
}
}
Das erste Ansichtsmodell wird beim Start angezeigt und enthält einige Setup-Informationen und eine Connect
Taste, die irgendwo eine Verbindungs initialisiert.
Wenn die Verbindung erfolgreich hergestellt wurde, möchte ich das erste ViewModel schließen und das zweite ViewModel, um einige Informationen über die Verbindung anzuzeigen. Wenn dies fehlschlägt, sollte das erste ViewModel das einfach anzeigen und dem Benutzer ermöglichen, die Verbindung erneut zu versuchen.
So brauche ich das tatsächliche Verbindungsobjekt vom ersten ViewModel an das zweite ViewModel und den Screen Conductor übergeben, um Viewmodels bei Erfolg zu ändern.
Wie kann dies in Caliburn.Micro erreicht werden?
einen gemeinsamen Typ zwischen den drei Klassenobjekte verwenden, offensichtlich diese Art in Frage erstellen und sie entweder in Kontruktor oder eine Eigenschaft machen von allen 3 Klassen ...? Oder Sie können EventAggregator verwenden, um ein Ereignis zu veröffentlichen, das von den anderen ViewModels akzeptiert und verarbeitet oder ignoriert wird. – mvermef