Beispiel #1
0
    public static async Task <object> ShowAsync(object model, string dialogName)
    {
        var view           = Instance.ViewManager.CreateAndBindViewForModelIfNecessary(model);
        var session        = DialogHost.GetDialogSession(dialogName);
        var sessionContext = (session?.Content as FrameworkElement)?.DataContext;

        if (model.Equals(sessionContext))
        {
            return(null);
        }

        if (DialogHost.IsDialogOpen(dialogName))
        {
            DialogHost.Close(dialogName);
        }

        (model as IScreenState)?.Activate();
        var result = await DialogHost.Show(view, dialogName).ConfigureAwait(true);

        (model as IScreenState)?.Deactivate();
        return(result);
    }