Привязка событий окна к команде WPF

никак не могу найти способ привязать команду или метод из ViewModel к View, во время события Window_Closing. Мне нужно сохранять данные при закрытии, хотелось бы сделать это не используя code-behind. Пожалуйста помогите.


Ответы (1 шт):

Автор решения: EvgeniyZ

Подписка на подобные события делается при помощи EventTrigger.

  • Добавляем в XAML пространство имен:

    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    
  • Подписываемся:

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Closing">
            <i:InvokeCommandAction Command="{Binding OnClosingCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    
  • Ну и тестовая команда пусть будет такой:

    public ICommand OnClosingCommand { get; }
    
    public MainViewModel()
    {
        OnClosingCommand = new RelayCommand(Close);
    }
    
    private void Close()
    {
        Debugger.Break();
    }
    

Все, после закрытия окна, будет вызван метод Close.


Про System.Windows.Interactivity

→ Ссылка