Я использую 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?