Проблема с срабатыванием события c# wpf mvvm

175
19 февраля 2019, 17:30

Есть 2 ViewModel это LoginViewModel и AuthViewModel В AuthViewModel идет инициализация и вызов делегата при срабатывании команды

public event EventHandler LoginCompleted;
    public ICommand AuthCommand => new Commands.RelayCommand(o => AuthMethod(o));
    public void AuthMethod(object parametr)
    {
        System.Windows.MessageBox.Show("Авторизация успешна");
        LoginCompleted?.Invoke(this, EventArgs.Empty);
    }

И я сделал унаследование LoginViewModel от AuthViewModel чтоб в App.xaml.cs был виден делегат. App.xaml.cs

protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        LoginWindow LoginWindow = new LoginWindow();
        LoginWindow.DataContext = new ViewModels.LoginViewModel();
        LoginWindow.Show();
        ((ViewModels.LoginViewModel)LoginWindow.DataContext).LoginCompleted += (s, ev) =>
        {
            Window MainWindow = new MainWindow();
            LoginWindow.Hide();
            LoginWindow.Close();
            MainWindow.DataContext = new ViewModels.MainViewModel();
            MainWindow.Show();
        };
    }

При клике на кнопку срабатываем команда и вызывается MessageBox но почему то окно LoginWindow не закрывается.

Есть способ AuthViewModel удалить и все сделать в LoginViewModel и так даже все работает. Но мне почему то кажется что не очень красиво в VM окна авторизации/регистрации делать VM страницы авторизации. Ведь у меня еще страница будет Register.xaml и для нее будет свой VM. Получается для Register.xaml есть свой VM а для Login.xaml не будет.

READ ALSO
Как скрыть метод базового класса?

Как скрыть метод базового класса?

У меня есть класс WsEvent:

179
Как рисовать в WPF без сглаживания?

Как рисовать в WPF без сглаживания?

Возникла необходимость нарисовать поверхность на основе примитивов (лаба по компьютерной графике)Поверхность рисуется в собственном контроле...

161
Покадровая анимация png

Покадровая анимация png

Есть ~100 файлов png нужно их как бы анимировать, весят они от 8кб до 4мб

162
Visual Studio Installer DotNetFX461

Visual Studio Installer DotNetFX461

Пытаюсь к инталлятору положить DotNetFX461Если не выполнять ни каких действий, то при сборке проекта ругается:

172