Как отобразить заставку и экран входа в систему перед загрузкой Actual Shell с помощью PRISM? - PullRequest
4 голосов
/ 31 августа 2011

Мне нужно показать заставку, когда пользователь нажимает на приложение, скажем, в течение 3 секунд, и после этого мне нужно показать экран входа в систему для проверки учетных данных.Если это действительный пользователь, то должна загружаться только основная оболочка приложения.Как выполнить эту задачу?

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Если вы хотите показать LoginDialog ПЕРЕД оболочкой, вам нужно создать свой собственный Bootstrapper, который наследуется от призмы Bootstrapper, и вызвать метод LoginDialog.ShowDialog () в CreateShell () (или InitializeShell ()) метода Bootstrapper

1 голос
/ 31 августа 2011

для заставки вы просто добавите новый элемент / заставку.файл .png будет добавлен в ваш проект, вы можете редактировать его или заменить его другим файлом .png с тем же именем.

для экрана входа в систему, ShowDialog () в главном окнеконструктор viewmodel, затем обрабатывает событие закрытия окна входа в систему, чтобы закрыть приложение, если пользователь не подтвержден, и просто закрыть, если пользователь подтвердил (я использую статический класс для сохранения глобальных значений, таких как идентификатор пользователя, зависит от него).выберите, выключить ли приложение или разрешить его загрузку), это зависит от того, как можно реализовать методы ShowDialog () и Close () в viewModel, я полагаю, вы уже поняли это, см. эту модель представления моего окна входа в систему

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using GlassStoreBLL;
using System.Windows;

namespace GlassStore.ViewModels
{
class LoginViewModel:ViewModelBase
{
    private String _UserName;
    private String _Password;
    private String _richMessage;
    private Commands.RelayCommand _login;
    private Commands.RelayCommand _closing;
    private IDialogueService _dialogService;
    private String _errorMessage;

    public LoginViewModel() : this(new DialogueService()) { }
    public LoginViewModel(IDialogueService dialogueService)
    {
        _dialogService = dialogueService;
        GlobalClass.userID = 0;
    }

    public String richMessage
    {

        get { return _richMessage; }
        set
        {
            if (_richMessage != value)
            {
                _richMessage = value;
                OnPropertyChanged("richMessage");
            }
        }
    }

    public String Password
    {
        get { return _Password; }
        set
        {
            if (_Password != value)
            {
                _Password = value;
                OnPropertyChanged("Password");
            }
        }
    }

    public String UserName
    {
        get { return _UserName; }
        set
        {
            if (_UserName != value)
            {
                _UserName = value;
                OnPropertyChanged("UserName");
            }
        }
    }

    public String errorMessage
    {
        get { return _errorMessage; }
        set
        {
            if (_errorMessage != value)
            {
                _errorMessage = value;
                OnPropertyChanged("errorMessage");
            }
        }
    }




    public ICommand login
    {
        get
        {
            if (_login == null)
            {
                _login = new Commands.RelayCommand(param => CanLogin(), param => Login());
            }

            return _login;
        }
    }

    public ICommand closing
    {
        get
        {
            if (_closing == null)
            {
                _closing = new Commands.RelayCommand(param => CanClosing(), param => Closing());
            }

            return _closing;
        }
    }

    private bool CanClosing()
    {
        return true;
    }

    private void Closing()
    {
        if (GlobalClass.userID == 0)
        {
            Application.Current.Shutdown();
        }
        else
        {

        }
    }

    private bool CanLogin()
    {
        return !String.IsNullOrEmpty(UserName) && !String.IsNullOrEmpty(Password);
    }

    private void Login()
    {
        try
        {
            User usr1 = new User();
            usr1 = usr1.userExists(UserName, Password);
            if (usr1.id == 0)
            {
                errorMessage = "اسم المستخدم أو كلمة السر أو الاثنان خطأ";
            }
            else
            {

                GlobalClass.userID = usr1.id;

                if (usr1.manager == "true")
                {
                    GlobalClass.manager = true;
                }
                else
                {
                    GlobalClass.manager = true;
                }


                var windows = Application.Current.Windows;
                for (var i = 0; i < windows.Count; i++)
                {
                    if (windows[i].DataContext == this)
                        _dialogService.Close(windows[i]);
                }
            }
        }
        catch (Exception d)
        {
            errorMessage = "خـطـأ";
            richMessage = d.Message;
        }
    }
}
}
...