MVVM Light EventToCommand не всегда срабатывает - PullRequest
0 голосов
/ 09 мая 2018

Я использую MVVM Light в приложении WPF и пытаюсь связать Window Closing event с командой, реализованной в ViewModel. Но когда я делаю это в XAML, обработчик событий вызывается случайным образом, сразу после запуска приложения оно обычно запускается, но после 20 или 30 минут работы приложения приложение сразу закрывается без запуска обработчика «Закрытие».

<Window 
[...]
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    xmlns:command="http://www.galasoft.ch/mvvmlight"
[...]
>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Closing">
            <command:EventToCommand  Command="{Binding Source={StaticResource Locator}, 
            Path=Main.ExitAppCmd, 
            Mode=OneWay}" 
            PassEventArgsToCommand="True" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Window>

Команда объявлена ​​в MainViewModel как:

public RelayCommand<CancelEventArgs> ExitAppCmd { get; private set; }

и устанавливается в обработчик событий:

ExitAppCmd = new RelayCommand<CancelEventArgs>((args) => ExitAppHandler(args));

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

Когда я связываю один и тот же обработчик в коде, обработчик всегда запускается.

private void Window_Closing(object sender, CancelEventArgs e)
{
    var model = DataContext as MainViewModel;
    model.ExitAppHandler(e);
}

Как я могу отладить, что не так с привязкой XAML?

...